version: '3.8' services: # PostgreSQL Database db: image: postgres:16-alpine environment: POSTGRES_DB: promptaid_e2e POSTGRES_USER: promptaid POSTGRES_PASSWORD: promptaid_e2e_password ports: - "5433:5432" volumes: - postgres_e2e_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U promptaid -d promptaid_e2e"] interval: 5s timeout: 5s retries: 5 # MinIO S3 Storage minio: image: minio/minio:latest environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin123 ports: - "9000:9000" - "9001:9001" volumes: - minio_e2e_data:/data command: server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 5s retries: 5 # Application (Frontend + Backend combined) app: build: context: .. dockerfile: Dockerfile environment: ENV: e2e DATABASE_URL: postgresql://promptaid:promptaid_e2e_password@db:5432/promptaid_e2e S3_ENDPOINT: http://minio:9000 S3_ACCESS_KEY: minioadmin S3_SECRET_KEY: minioadmin123 S3_BUCKET: promptaid-e2e VISION_PROVIDER: mock ADMIN_PASSWORD: admin_e2e_password ports: - "7860:7860" depends_on: db: condition: service_healthy minio: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7860/health"] interval: 10s timeout: 5s retries: 5 volumes: postgres_e2e_data: minio_e2e_data: