# Deploy-compose voor test/prod. Draait op de VM. # De app-image wordt NIET gebouwd maar uit de Forgejo registry gepulld. # CI zet het juiste IMAGE (incl. tag) in een .env naast dit bestand en draait: # docker compose -f compose.deploy.yaml pull # docker compose -f compose.deploy.yaml up -d # # Verwachte env-variabelen op de VM (in ./.env): # IMAGE=git.jouwdomein.nl/ramon/teach:dev (of :vX.Y.Z op prod) # POSTGRES_DB / POSTGRES_USER / POSTGRES_PASSWORD # DATABASE_URL=postgres://:@db:5432/ # APP_PORT=3000 (poort die nginx op deze VM naar de app proxyt) services: app: image: ${IMAGE} depends_on: db: condition: service_healthy environment: PORT: 3000 DATABASE_URL: ${DATABASE_URL} APP_VERSION: ${IMAGE} ports: # Alleen op localhost van de VM; nginx zit ervoor als reverse proxy - "127.0.0.1:${APP_PORT:-3000}:3000" restart: unless-stopped db: image: postgres:17-alpine environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: - pgdata:/var/lib/postgresql/data - ./db:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 5s timeout: 3s retries: 10 restart: unless-stopped volumes: pgdata: