From 75bcdadb24fae1db548ad7613b88f456ffe42816 Mon Sep 17 00:00:00 2001
From: Oghenetega Okene <okenetega@gmail.com>
Date: Sun, 3 Mar 2024 20:40:06 -0600
Subject: [PATCH] Add Docker Compose file for development without HTTPS

---
 docker-compose-dev.yml                        | 67 +++++++++++++++++++
 docker-compose.yml => docker-compose-prod.yml |  0
 nginx/default-dev.conf                        | 27 ++++++++
 3 files changed, 94 insertions(+)
 create mode 100644 docker-compose-dev.yml
 rename docker-compose.yml => docker-compose-prod.yml (100%)
 create mode 100644 nginx/default-dev.conf

diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml
new file mode 100644
index 0000000..b865ce1
--- /dev/null
+++ b/docker-compose-dev.yml
@@ -0,0 +1,67 @@
+version: "3.9"
+
+services:
+  api:
+    build:
+      context: ./backend
+      dockerfile: Dockerfile
+    image: backend-api:1.0
+    expose:
+      - "8000"
+    entrypoint: ./entrypoint-api.sh
+    env_file: .env.dev
+    volumes:
+      - staticfiles:/staticfiles
+    depends_on:
+      - postgres-db
+
+  celery:
+    build:
+      context: ./backend
+      dockerfile: Dockerfile
+    image: backend-celery:1.0
+    entrypoint: ./entrypoint-celery.sh
+    environment:
+      - CELERY_BROKER=redis://redis:6379/0
+    env_file: .env.dev
+    depends_on:
+      - api
+      - redis
+
+  redis:
+    image: redis:7.2.4-alpine
+    command: redis-server
+    expose:
+      - "6379"
+
+  postgres-db:
+    image: postgres:15-alpine
+    volumes:
+      - postgres_data:/var/lib/postgresql/data/
+    env_file: .env.dev
+    expose:
+      - "5432"
+
+  nginx:
+    image: nginx:1.25.4-alpine
+    ports:
+      - "80:80"
+    volumes:
+      - staticfiles:/staticfiles
+      - frontend_build:/var/www/frontend
+      - ./nginx/default-dev.conf:/etc/nginx/conf.d/default.conf
+    depends_on:
+      - api
+      - frontend
+
+  frontend:
+    build:
+      context: ./frontend
+      dockerfile: Dockerfile
+    volumes:
+      - frontend_build:/frontend/build
+
+volumes:
+  staticfiles:
+  frontend_build:
+  postgres_data:
diff --git a/docker-compose.yml b/docker-compose-prod.yml
similarity index 100%
rename from docker-compose.yml
rename to docker-compose-prod.yml
diff --git a/nginx/default-dev.conf b/nginx/default-dev.conf
new file mode 100644
index 0000000..3646ebf
--- /dev/null
+++ b/nginx/default-dev.conf
@@ -0,0 +1,27 @@
+upstream myproject {
+    server api:8000;
+}
+
+server {
+    listen 80;
+
+    location / {
+        alias /var/www/frontend/;
+        try_files $uri $uri/ /index.html;
+    }
+
+    location /api {
+        try_files $uri @proxy_api;
+    }
+
+    location @proxy_api {
+        proxy_pass http://myproject;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header Host $host;
+        proxy_redirect off;
+    }
+
+    location /django-static/ {
+        alias /staticfiles/;
+    }
+}
\ No newline at end of file