diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e3ec79a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,16 @@ +.dbbackup/ +.idea/ +.mypy_cache/ +.vagrant/ +.venv/ +venv/ +.vscode/ + +Caddyfile +docker-compose.yml +mail.log/ +/roles/ +/static/ +*.sqlite3* +*.log* +deployment* \ No newline at end of file diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..b94e0c6 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,18 @@ +localhost breccia-mapper-dev breccia-mapper-dev.jagraham.co.uk mapper.gcrf-breccia.com { + + tls internal + + root * /srv + file_server + + @proxy_paths { + not path /static/* + } + + reverse_proxy @proxy_paths http://web:8000 + + log { + output stderr + format single_field common_log + } +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d8c5165 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.8-slim + +RUN groupadd -r mapper && useradd --no-log-init -r -g mapper mapper + +WORKDIR /app + +COPY requirements.txt ./ + +RUN pip install --no-cache-dir --upgrade pip \ + && pip install --no-cache-dir -r /app/requirements.txt gunicorn + +COPY . ./ + +ENTRYPOINT [ "/app/entrypoint.sh" ] +CMD [ "gunicorn", "-w", "2", "-b", "0.0.0.0:8000", "breccia_mapper.wsgi" ] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..57d1d0e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3.1' + +services: + web: + build: . + ports: + - 8000:8000 + environment: + DEBUG: "true" + DATABASE_URL: sqlite:////app/db.sqlite3 + volumes: + - ./db.sqlite3:/app/db.sqlite3:z + - static_files:/app/static + + caddy: + image: caddy:2 + restart: unless-stopped + ports: + - 80:80 + - 443:443 + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile:z + # Caddy serves static files collected by Django + - static_files:/srv/static + - caddy_data:/data + - caddy_config:/config + depends_on: + - web + +volumes: + caddy_data: + caddy_config: + static_files: diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..64e83ff --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +python manage.py migrate \ + && python manage.py collectstatic --no-input \ + && exec "$@" diff --git a/requirements.txt b/requirements.txt index 069d417..bbf79b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,7 +21,7 @@ isort==4.3.21 jsonfield==3.1.0 lazy-object-proxy==1.4.3 mccabe==0.6.1 -mysqlclient==1.4.6 +# mysqlclient==1.4.6 pep8-naming==0.4.1 prospector==1.2.0 pycodestyle==2.4.0