services: postgres: image: postgres:17.6-alpine3.22 environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 3s retries: 10 start_period: 5s volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped weather-etl: build: . env_file: .env depends_on: postgres: condition: service_healthy ports: - "8080:8080" volumes: - raw_data:/app/data/raw - processed_data:/app/data/processed - etl_logs:/app/logs restart: unless-stopped volumes: postgres_data: raw_data: processed_data: etl_logs: