services: mysql: image: mysql:8.0 container_name: harborforge-test-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-harborforge_root} MYSQL_DATABASE: ${MYSQL_DATABASE:-harborforge} MYSQL_USER: ${MYSQL_USER:-harborforge} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-harborforge_pass} healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 deploy: resources: limits: cpus: '0.5' memory: 512M networks: - test-network wizard: build: context: ../AbstractWizard dockerfile: Dockerfile image: harborforge-test-wizard:dev container_name: harborforge-test-wizard user: 0:0 restart: unless-stopped volumes: - wizard_config:/config environment: CONFIG_DIR: /config LISTEN_ADDR: "0.0.0.0:8080" MAX_BACKUPS: "5" CORS_ORIGINS: http://frontend:3000 ports: - "${WIZARD_PORT:-18080}:8080" deploy: resources: limits: cpus: '0.1' memory: 64M networks: - test-network backend: build: context: ../HarborForge.Backend dockerfile: Dockerfile image: harborforge-test-backend:dev container_name: harborforge-test-backend restart: unless-stopped environment: CONFIG_DIR: /config CONFIG_FILE: harborforge.json SECRET_KEY: ${SECRET_KEY:-change_me_in_production} LOG_LEVEL: ${LOG_LEVEL:-INFO} DATABASE_URL: mysql+pymysql://harborforge:harborforge_pass@mysql:3306/harborforge volumes: - wizard_config:/config:ro depends_on: mysql: condition: service_healthy deploy: resources: limits: cpus: '0.5' memory: 512M healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 10s networks: - test-network frontend: build: context: ../HarborForge.Frontend dockerfile: Dockerfile args: VITE_WIZARD_PORT: 8080 image: harborforge-test-frontend:dev container_name: harborforge-test-frontend restart: unless-stopped environment: VITE_API_BASE_URL: http://backend:8000 depends_on: - wizard - backend deploy: resources: limits: cpus: '0.25' memory: 128M healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000"] interval: 30s timeout: 10s retries: 3 networks: - test-network test: build: context: ./HarborForge.Frontend.Test dockerfile: Dockerfile image: harborforge-test-runner:dev container_name: harborforge-test-runner restart: "no" environment: BASE_URL: http://frontend:3000 WEB_SERVER_URL: http://frontend:3000 CHROME_DEBUGGING_PORT: 9222 depends_on: frontend: condition: service_healthy backend: condition: service_healthy networks: - test-network volumes: wizard_config: driver: local networks: test-network: driver: bridge