# Stack voor de test-server (en later productie). # # Waar de gegevens staan, bepaal je in .env (scripts/install.sh vraagt ernaar): # DATA_DB / DATA_MEDIA / DATA_STATIC # - een naam (bv. pgdata) -> Docker beheert het volume # - een pad (bv. ./data/postgres) -> gewone map, direct benaderbaar # Laat je ze leeg, dan gelden de named volumes hieronder — precies zoals # bestaande installaties nu al draaien. # # 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: - ${DATA_DB:-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 } FRONTEND_BASE_URL: ${FRONTEND_BASE_URL:-} volumes: # Verzamelde statics delen met nginx. - ${DATA_STATIC:-static_volume}:/app/staticfiles # Geüploade media (pictogrammen, logo) delen met nginx. - ${DATA_MEDIA:-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). - ${DATA_STATIC:-static_volume}:/static:ro - ${DATA_MEDIA:-media_volume}:/media:ro volumes: pgdata: static_volume: media_volume: