version: '3.8' services: postgres: image: postgres:15-alpine container_name: testautomation-db environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: testautomation ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data - ./postgres/init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: testautomation-redis ports: - "6379:6379" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 backend: build: context: ../backend dockerfile: Dockerfile container_name: testautomation-api ports: - "8000:8000" environment: DATABASE_URL: postgresql://postgres:postgres@postgres:5432/testautomation SECRET_KEY: 09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7 CELERY_BROKER_URL: redis://redis:6379/0 CELERY_RESULT_BACKEND: redis://redis:6379/0 volumes: - ../backend/uploads:/app/uploads - ../backend/reports:/app/reports - ../backend/logs:/app/logs depends_on: postgres: condition: service_healthy redis: condition: service_healthy restart: unless-stopped frontend: build: context: ../frontend dockerfile: Dockerfile container_name: testautomation-ui ports: - "3000:3000" depends_on: - backend restart: unless-stopped volumes: postgres_data: