From 3c1fec3f63ef966d2e3252347c4b83550b0e00d4 Mon Sep 17 00:00:00 2001 From: binaryDiv Date: Mon, 21 Oct 2019 01:19:02 +0200 Subject: [PATCH] #2: use gunicorn with nginx as reverse proxy --- .deployment/nginx/Dockerfile | 4 ++++ .deployment/nginx/nginx.conf | 14 ++++++++++++++ .deployment/production/docker-compose.yml | 13 ++++++++++--- Dockerfile | 9 +++------ Makefile | 2 +- 5 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 .deployment/nginx/Dockerfile create mode 100644 .deployment/nginx/nginx.conf diff --git a/.deployment/nginx/Dockerfile b/.deployment/nginx/Dockerfile new file mode 100644 index 0000000..66074cf --- /dev/null +++ b/.deployment/nginx/Dockerfile @@ -0,0 +1,4 @@ +FROM nginx:1.17.4-alpine + +RUN rm /etc/nginx/conf.d/default.conf +COPY nginx.conf /etc/nginx/conf.d diff --git a/.deployment/nginx/nginx.conf b/.deployment/nginx/nginx.conf new file mode 100644 index 0000000..360a4c6 --- /dev/null +++ b/.deployment/nginx/nginx.conf @@ -0,0 +1,14 @@ +upstream app_django { + server django:8000; +} + +server { + listen 80; + + location / { + proxy_pass http://app_django; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_redirect off; + } +} diff --git a/.deployment/production/docker-compose.yml b/.deployment/production/docker-compose.yml index 055e7ac..cfb7507 100644 --- a/.deployment/production/docker-compose.yml +++ b/.deployment/production/docker-compose.yml @@ -1,11 +1,18 @@ version: "3" services: - django-server: + django: build: ../../ - ports: - - "8042:8042" + expose: + - 8000 volumes: - /run/mysqld/:/run/mysqld/ env_file: - production.secrets.env + + nginx: + build: ../nginx + ports: + - 8042:80 + depends_on: + - django diff --git a/Dockerfile b/Dockerfile index 5626cc1..2daa3a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,5 @@ FROM alpine:3.7 -EXPOSE 8042 WORKDIR /usr/src/app RUN apk add --no-cache \ @@ -19,9 +18,7 @@ RUN apk add --virtual build-deps gcc python3-dev musl-dev && \ COPY . . -# TODO #1: build a real production setup with gunicorn, nginx for static files etc. -#CMD ["gunicorn", "pluralityspace.wsgi:application", \ -# "--bind", "0.0.0.0:8042"] +EXPOSE 8000 -ENTRYPOINT ["python3", "./manage.py"] -CMD ["runserver", "0.0.0.0:8042"] +CMD ["gunicorn", "pluralityspace.wsgi:application", \ + "--bind", "0.0.0.0:8000"] diff --git a/Makefile b/Makefile index 5426755..296ebe9 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ docker-build: # Run docker image (without docker-compose) docker-run: - docker run --rm -ti -p 8042:8042 $(APP_NAME):latest + docker run --rm -ti -p 8000:8000 $(APP_NAME):latest ### Deployment