roosterwijs/docker-compose.yml

58 lines
1.6 KiB
YAML

# Stack voor de test-server (en later productie):
# db - PostgreSQL
# backend - Django via gunicorn
# nginx - serveert de frontend en proxyt /api + /admin naar de backend
#
# Instellingen komen uit het .env-bestand (zie .env.example).
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 10
backend:
build: ./backend
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
DJANGO_SECRET_KEY: ${DJANGO_SECRET_KEY}
DJANGO_DEBUG: ${DJANGO_DEBUG:-0}
DJANGO_SECURE: ${DJANGO_SECURE:-0}
DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS}
DJANGO_CSRF_TRUSTED_ORIGINS: ${DJANGO_CSRF_TRUSTED_ORIGINS}
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_HOST: db
POSTGRES_PORT: 5432
volumes:
# Verzamelde statics delen met nginx.
- static_volume:/app/staticfiles
nginx:
build: ./frontend
restart: unless-stopped
depends_on:
- backend
ports:
# Linkerkant is de poort op de server; pas aan indien bezet.
- "8080:80"
volumes:
# Lees de door Django verzamelde statics (alleen-lezen).
- static_volume:/static:ro
volumes:
pgdata:
static_volume: