services: app: image: drytrix/seamdestress:latest build: context: . target: final restart: unless-stopped env_file: - .env environment: FLASK_ENV: production ports: - "5000:5000" volumes: - uploads:/data/uploads depends_on: db: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5000/healthz"] interval: 30s timeout: 5s retries: 3 start_period: 20s db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-seamdestress} POSTGRES_USER: ${POSTGRES_USER:-seamdestress} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-seamdestress} volumes: - db_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-seamdestress}"] interval: 10s timeout: 5s retries: 5 volumes: db_data: uploads: