From d830cd20e3efd2bcb7df26dd4289435174f81701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Mon, 15 Jun 2020 22:46:32 +0200 Subject: [PATCH] Add gunicorn for prod and traefik --- docker/django/Dockerfile | 1 + docker/docker-compose.prod.yml | 20 ++++++++++++++++++++ docker/docker-compose.yml | 21 ++++++++++++++------- requirements.txt | 1 + 4 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 docker/docker-compose.prod.yml diff --git a/docker/django/Dockerfile b/docker/django/Dockerfile index 58011fa..95f0005 100644 --- a/docker/django/Dockerfile +++ b/docker/django/Dockerfile @@ -17,4 +17,5 @@ RUN pip3 install -r /tmp/requirements.txt && rm /tmp/requirements.txt USER 1000:1000 WORKDIR /srv/app/freedcs +EXPOSE 8000/tcp CMD ["python3", "manage.py", "runserver"] diff --git a/docker/docker-compose.prod.yml b/docker/docker-compose.prod.yml new file mode 100644 index 0000000..984e518 --- /dev/null +++ b/docker/docker-compose.prod.yml @@ -0,0 +1,20 @@ +version: "3.7" + +services: + ingress: + command: --providers.docker + ports: + - "80:80" + + freedcs: + volumes: + - "./django/production.py.sample:/srv/freedcs/freedcs/production.py" + command: ["gunicorn", "-b", "0.0.0.0:8000", "freedcs.wsgi:application"] + + data-migration: + volumes: + - "./django/production.py.sample:/srv/freedcs/freedcs/production.py" + + mqtt-to-db: + volumes: + - "./django/production.py.sample:/srv/freedcs/freedcs/production.py" diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index bf0e585..f56beb3 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -31,8 +31,6 @@ services: - "pgdata:/var/lib/postgresql/data" networks: - net - ports: - - "127.0.0.1:5432:5432" rabbitmq: <<: *service_default @@ -60,6 +58,18 @@ services: # ports: # - "127.0.0.1:22375:2375" + ingress: + image: traefik:v2.2 + command: --api.insecure=true --providers.docker + ports: + - "8000:80" + - "8080:8080" + networks: + - net + volumes: + # So that Traefik can listen to the Docker events + - /var/run/docker.sock:/var/run/docker.sock + freedcs: <<: *service_default build: @@ -68,21 +78,19 @@ services: image: daniviga/freedcs volumes: - "../freedcs:/srv/freedcs" - - "./django/production.py.sample:/srv/freedcs/freedcs/production.py" command: ["python3", "manage.py", "runserver", "0.0.0.0:8000"] networks: - net - ports: - - "8000:8000" depends_on: - data-migration - timescale + labels: + - "traefik.http.routers.freedcs.rule=PathPrefix(`/`)" data-migration: image: daniviga/freedcs volumes: - "../freedcs:/srv/freedcs" - - "./django/production.py.sample:/srv/freedcs/freedcs/production.py" command: ["python3", "manage.py", "migrate", "--noinput"] networks: - net @@ -92,7 +100,6 @@ services: image: daniviga/freedcs volumes: - "../freedcs:/srv/freedcs" - - "./django/production.py.sample:/srv/freedcs/freedcs/production.py" command: ["python3", "manage.py", "mqtt-to-db"] networks: - net diff --git a/requirements.txt b/requirements.txt index 84a744d..820ab80 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,3 +3,4 @@ djangorestframework psycopg2-binary paho-mqtt==1.5.0 asyncio-mqtt==0.5.0 +gunicorn