diff --git a/docker-compose-frontend.yml b/docker-compose-frontend.yml new file mode 100644 index 0000000..7bbad42 --- /dev/null +++ b/docker-compose-frontend.yml @@ -0,0 +1,133 @@ +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