services: app: build: context: . dockerfile: Dockerfile container_name: healthlog-app expose: - "3000" environment: DATABASE_URL: "postgresql://healthlog:healthlog@db:5432/healthlog?schema=public" NODE_ENV: production SESSION_SECRET: "${SESSION_SECRET:?SESSION_SECRET is required}" ENCRYPTION_KEY: "${ENCRYPTION_KEY:?ENCRYPTION_KEY is required}" API_TOKEN_HMAC_KEY: "${API_TOKEN_HMAC_KEY:?API_TOKEN_HMAC_KEY is required}" NEXT_PUBLIC_APP_URL: "${NEXT_PUBLIC_APP_URL:-http://localhost:3000}" APP_URL: "${APP_URL:-http://localhost:3000}" depends_on: db: condition: service_healthy restart: unless-stopped db: image: postgres:16-alpine container_name: healthlog-db environment: POSTGRES_USER: healthlog POSTGRES_PASSWORD: healthlog POSTGRES_DB: healthlog volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U healthlog"] interval: 5s timeout: 5s retries: 5 restart: unless-stopped volumes: pgdata: