70 lines
2.2 KiB
YAML
70 lines
2.2 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
|
|
DJANGO_EMAIL_BACKEND: ${DJANGO_EMAIL_BACKEND:-django.core.mail.backends.console.EmailBackend}
|
|
EMAIL_HOST: ${EMAIL_HOST:-}
|
|
EMAIL_PORT: ${EMAIL_PORT:-587}
|
|
EMAIL_HOST_USER: ${EMAIL_HOST_USER:-}
|
|
EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD:-}
|
|
EMAIL_USE_TLS: ${EMAIL_USE_TLS:-1}
|
|
DEFAULT_FROM_EMAIL: ${DEFAULT_FROM_EMAIL:-Roosterwijs <noreply@roosterwijs.local>}
|
|
FRONTEND_BASE_URL: ${FRONTEND_BASE_URL:-}
|
|
volumes:
|
|
# Verzamelde statics delen met nginx.
|
|
- static_volume:/app/staticfiles
|
|
# Geüploade media (pictogrammen) delen met nginx.
|
|
- media_volume:/app/media
|
|
|
|
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
|
|
- media_volume:/media:ro
|
|
|
|
volumes:
|
|
pgdata:
|
|
static_volume:
|
|
media_volume:
|