services: manifest: image: manifestdotbuild/manifest:6 environment: - SERVICE_URL_MANIFEST_2099 - PORT=2099 - BIND_ADDRESS=0.0.0.0 - DATABASE_URL=postgresql://manifest:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/manifest - BETTER_AUTH_SECRET=${SERVICE_HEX_64_AUTH} - MANIFEST_ENCRYPTION_KEY=${SERVICE_HEX_64_ENCRYPTION} - BETTER_AUTH_URL=${SERVICE_URL_MANIFEST_2099} - MANIFEST_MODE=selfhosted - NODE_ENV=production - DB_POOL_MAX=10 - AUTH_DB_POOL_MAX=5 - REQUEST_RECORDING_STORAGE=filesystem - REQUEST_RECORDING_FILESYSTEM_PATH=/data/request-recordings volumes: - manifest-recordings-data:/data/request-recordings depends_on: postgres: condition: service_healthy healthcheck: test: - CMD - node - -e - "const p=process.env.PORT||'2099';fetch(`http://127.0.0.1:$${p}/api/v1/health`).then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" interval: 30s timeout: 5s start_period: 90s retries: 3 postgres: image: postgres:16-alpine environment: - POSTGRES_USER=manifest - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} - POSTGRES_DB=manifest volumes: - manifest-postgres-data:/var/lib/postgresql/data healthcheck: test: pg_isready -U manifest interval: 5s timeout: 3s retries: 5 volumes: manifest-postgres-data: manifest-recordings-data: