version: "3.8" services: app: build: context: . dockerfile: Dockerfile args: APT_CACHE_URL: ${APT_CACHE_URL:-} environment: - ENVIRONMENT=staging - DEBUG=false - LOG_LEVEL=INFO # Database configuration - can be overridden by external env - DATABASE_HOST=${DATABASE_HOST:-postgres} - DATABASE_PORT=${DATABASE_PORT:-5432} - DATABASE_USER=${DATABASE_USER:-calminer} - DATABASE_PASSWORD=${DATABASE_PASSWORD} - DATABASE_NAME=${DATABASE_NAME:-calminer_db} - DATABASE_DRIVER=postgresql # Staging-specific settings - CALMINER_EXPORT_MAX_ROWS=50000 - CALMINER_IMPORT_MAX_ROWS=50000 - CALMINER_EXPORT_METADATA=true - CALMINER_IMPORT_STAGING_TTL=600 ports: - "8003:8003" depends_on: - postgres restart: unless-stopped # Health check for staging healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8003/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s postgres: environment: - POSTGRES_USER=${DATABASE_USER:-calminer} - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=${DATABASE_NAME:-calminer_db} ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped # Health check for postgres healthcheck: test: [ "CMD-SHELL", "pg_isready -U ${DATABASE_USER:-calminer} -d ${DATABASE_NAME:-calminer_db}", ] interval: 30s timeout: 10s retries: 3 start_period: 30s volumes: postgres_data: