services: release: build: context: . target: build command: sh scripts/release.sh restart: "no" env_file: - .env depends_on: db: condition: service_healthy volumes: - uploads:/app/storage/uploads networks: - briefing app: build: context: . target: runner restart: unless-stopped env_file: - .env depends_on: release: condition: service_completed_successfully ports: - "3000:3000" volumes: - uploads:/app/storage/uploads healthcheck: test: ["CMD-SHELL", "node -e \"fetch('http://localhost:3000/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\""] interval: 30s timeout: 10s retries: 5 start_period: 30s networks: - briefing db: image: postgres:16 restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-briefing} POSTGRES_USER: ${POSTGRES_USER:-briefing} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-briefing} -d ${POSTGRES_DB:-briefing}"] interval: 10s timeout: 5s retries: 5 volumes: - pgdata:/var/lib/postgresql/data networks: - briefing volumes: pgdata: uploads: networks: briefing: driver: bridge