diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..e60f32e --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,28 @@ +version: "3.9" +services: + nginx: + build: ./nginx/ + restart: always + volumes: + - uwsgi_data:/tmp/uwsgi/ + - web_static:/var/www/jdav_web/assets/:ro + ports: + - "8888:80" + depends_on: + - django + + django: + build: ./jdav_web/ + env_file: docker.env + restart: always + command: > + sh -c "python manage.py collectstatic --noinput + && uwsgi --ini kompass.uwsgi.ini" + volumes: + - uwsgi_data:/tmp/uwsgi/ + - web_static:/code/static/ + - web_static:/var/www/jdav_web/assets/ + +volumes: + uwsgi_data: + web_static: diff --git a/docker.env b/docker.env new file mode 100644 index 0000000..ef2154f --- /dev/null +++ b/docker.env @@ -0,0 +1,18 @@ +DJANGO_ALLOWED_HOST='*' +DJANGO_BASE_URL='localhost:8008' +DJANGO_PROTOCOL='http' + +EMAIL_HOST='hartley.uberspace.de' +EMAIL_HOST_USER='post@flavigny.de' +EMAIL_HOST_PASSWORD='Post00Flavigny..' +EMAIL_SENDING_ADDRESS='post@flavigny.de' + +DJANGO_DEPLOY=1 + +DJANGO_DATABASE_NAME='jdav_db' +DJANGO_DATABASE_USER='jdav_db' +DJANGO_DATABASE_PASSWORD='jdav00jdav' +DJANGO_DATABASE_HOST='172.17.0.1' + +DJANGO_SETTINGS_MODULE='jdav_web.settings' +DJANGO_STATIC_ROOT='/var/www/jdav_web/assets' diff --git a/jdav_web/Dockerfile b/jdav_web/Dockerfile new file mode 100644 index 0000000..dd07ac2 --- /dev/null +++ b/jdav_web/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3.9-bullseye +RUN mkdir /code +WORKDIR /code +COPY . /code + +# uwsgi setup +RUN apt-get install libmariadb-dev +RUN pip install uwsgi +RUN pip install -r requirements.txt +CMD ["uwsgi", "--ini", "/web/kompass.uwsgi.ini"] diff --git a/jdav_web/jdav_web/settings.py b/jdav_web/jdav_web/settings.py index 704e64b..0f95769 100644 --- a/jdav_web/jdav_web/settings.py +++ b/jdav_web/jdav_web/settings.py @@ -110,10 +110,10 @@ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': os.environ.get('DJANGO_DATABASE_NAME', 'jdav_db'), - 'OPTIONS': { - 'read_default_file': os.environ.get('DJANGO_DATABASE_CONFIG', - os.path.join(BASE_DIR, 'my.cnf')) - }, + 'USER': os.environ.get('DJANGO_DATABASE_USER', 'jdav_user'), + 'PASSWORD': os.environ.get('DJANGO_DATABASE_PASSWORD', 'password'), + 'HOST': os.environ.get('DJANGO_DATABASE_HOST', '127.0.0.1'), + 'PORT': os.environ.get('DJANGO_DATABASE_PORT', '5432') } } @@ -162,7 +162,7 @@ STATICFILES_DIRS = [ # use python3 manage.py collectstatic to collect static files in the STATIC_ROOT # this is needed for deployment STATIC_ROOT = os.environ.get('DJANGO_STATIC_ROOT', - os.path.join((os.path.join(BASE_DIR, os.pardir)), "static")) + '/var/www/jdav_web/assets') # Locale files (translations) diff --git a/jdav_web/kompass.uwsgi.ini b/jdav_web/kompass.uwsgi.ini new file mode 100644 index 0000000..f1a7451 --- /dev/null +++ b/jdav_web/kompass.uwsgi.ini @@ -0,0 +1,8 @@ +[uwsgi] + +socket = /tmp/uwsgi/kompass.sock +module = jdav_web.wsgi +master = true +processes = 2 +chmod-socket = 666 +vacuum = true diff --git a/requirements.txt b/jdav_web/requirements.txt similarity index 100% rename from requirements.txt rename to jdav_web/requirements.txt diff --git a/nginx/Dockerfile b/nginx/Dockerfile new file mode 100644 index 0000000..1745b8a --- /dev/null +++ b/nginx/Dockerfile @@ -0,0 +1,8 @@ +FROM nginx:latest + +COPY nginx.conf /etc/nginx/nginx.conf +COPY kompass.nginx.conf /etc/nginx/sites-available/kompass.nginx.conf +RUN mkdir /etc/nginx/sites-enabled +RUN ln -s /etc/nginx/sites-available/kompass.nginx.conf /etc/nginx/sites-enabled/ + +CMD ["nginx", "-g", "daemon off;"] diff --git a/nginx/kompass.nginx.conf b/nginx/kompass.nginx.conf new file mode 100644 index 0000000..a345e41 --- /dev/null +++ b/nginx/kompass.nginx.conf @@ -0,0 +1,20 @@ +upstream uwsgi { + server unix:/tmp/uwsgi/kompass.sock; +} + +server { + listen 80; + server_name 127.0.0.1; + charset utf-8; + + location /static { + alias /var/www/jdav_web/assets; + } + + location / { + uwsgi_pass uwsgi; + include /etc/nginx/uwsgi_params; + } + +} + diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..44eb8e6 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,35 @@ +user root; + +worker_processes auto; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + +log_format main '$remote_addr - $remote_user [$time_local] +"$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + +access_log /var/log/nginx/access.log main; + +sendfile on; + +#tcp_nopush on; + +keepalive_timeout 65; + +#gzip on; + +#include /etc/nginx/conf.d/*.conf; + +include /etc/nginx/sites-enabled/*; + +}