# 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 # 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: