diff --git a/cleanup.sh b/cleanup.sh new file mode 100755 index 0000000..c663337 --- /dev/null +++ b/cleanup.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Cleanup script for HarborForge Test +# Removes containers and networks, but keeps images + +set -e + +COMPOSE_FILE="docker-compose-frontend.yml" + +echo "๐Ÿงน Cleaning up HarborForge Test containers..." + +# Stop and remove containers, networks (keep images) +docker compose -f "$COMPOSE_FILE" down + +# Also remove the wizard config volume +docker volume rm harborforgetest_wizard_config 2>/dev/null || true + +echo "โœ… Cleanup complete!" diff --git a/docker-compose-frontend.yml b/docker-compose-frontend.yml index 7bbad42..0cee06f 100644 --- a/docker-compose-frontend.yml +++ b/docker-compose-frontend.yml @@ -2,7 +2,9 @@ services: mysql: image: mysql:8.0 container_name: harborforge-test-mysql - restart: unless-stopped + restart: "no" + tmpfs: + - /var/lib/mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-harborforge_root} MYSQL_DATABASE: ${MYSQL_DATABASE:-harborforge} @@ -13,11 +15,6 @@ services: interval: 10s timeout: 5s retries: 5 - deploy: - resources: - limits: - cpus: '0.5' - memory: 512M networks: - test-network @@ -28,7 +25,7 @@ services: image: harborforge-test-wizard:dev container_name: harborforge-test-wizard user: 0:0 - restart: unless-stopped + restart: "no" volumes: - wizard_config:/config environment: @@ -37,12 +34,7 @@ services: MAX_BACKUPS: "5" CORS_ORIGINS: http://frontend:3000 ports: - - "${WIZARD_PORT:-18080}:8080" - deploy: - resources: - limits: - cpus: '0.1' - memory: 64M + - "18080:8080" networks: - test-network @@ -52,29 +44,20 @@ services: dockerfile: Dockerfile image: harborforge-test-backend:dev container_name: harborforge-test-backend - restart: unless-stopped + restart: "no" + volumes: + - wizard_config:/config:ro 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 + ports: + - "${MAP_BACKEND_PORT:- }:8000" 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 @@ -84,24 +67,17 @@ services: dockerfile: Dockerfile args: VITE_WIZARD_PORT: 8080 + VITE_WIZARD_HOST: wizard image: harborforge-test-frontend:dev container_name: harborforge-test-frontend - restart: unless-stopped + restart: "no" environment: VITE_API_BASE_URL: http://backend:8000 + ports: + - "${MAP_FRONTEND_PORT:- }:3000" 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 @@ -115,18 +91,14 @@ services: environment: BASE_URL: http://frontend:3000 WEB_SERVER_URL: http://frontend:3000 + WIZARD_URL: http://wizard:8080/wizard + WIZARD_API_URL: http://wizard:8080 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: diff --git a/run-test.sh b/run-test.sh new file mode 100755 index 0000000..de236ca --- /dev/null +++ b/run-test.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# Run test and cleanup afterwards +set -e + +COMPOSE_FILE="docker-compose-frontend.yml" + +echo "๐Ÿš€ Running HarborForge Test..." + +# Clean any previous containers first +docker compose -f "$COMPOSE_FILE" down 2>/dev/null || true + +# Run test +docker compose -f "$COMPOSE_FILE" run --rm test +TEST_EXIT_CODE=$? + +echo "" +echo "๐Ÿงน Cleaning up containers and volumes..." +docker compose -f "$COMPOSE_FILE" down -v + +if [ $TEST_EXIT_CODE -eq 0 ]; then + echo "โœ… Test passed!" +else + echo "โŒ Test failed with exit code: $TEST_EXIT_CODE" +fi + +exit $TEST_EXIT_CODE