|
| 1 | +# |
| 2 | +# 🐳 VSMONSTER Docker 乾淨安裝測試環境 |
| 3 | +# |
| 4 | +# 用途:在全新的 Docker 容器中測試安裝流程 |
| 5 | +# 每次測試完會自動刪除容器,確保環境乾淨 |
| 6 | +# |
| 7 | +# 使用方式: |
| 8 | +# docker-compose -f docker-compose.test.yml up --build |
| 9 | +# docker-compose -f docker-compose.test.yml down -v # 刪除 |
| 10 | +# |
| 11 | + |
| 12 | +version: '3.8' |
| 13 | + |
| 14 | +services: |
| 15 | + # ============================================ |
| 16 | + # 🧪 安裝測試容器 |
| 17 | + # ============================================ |
| 18 | + install-test: |
| 19 | + build: |
| 20 | + context: . |
| 21 | + dockerfile: Dockerfile.test |
| 22 | + container_name: vsmonster-install-test |
| 23 | + volumes: |
| 24 | + # 掛載測試結果到本機 |
| 25 | + - ./dev-test-results:/app/dev-test-results |
| 26 | + # 不掛載 node_modules,確保乾淨安裝 |
| 27 | + environment: |
| 28 | + - NODE_ENV=development |
| 29 | + - CI=true |
| 30 | + command: /bin/bash -c "./scripts/dev-test.sh 2>&1 | tee /app/dev-test-results/docker-test.log" |
| 31 | + # 測試完自動停止 |
| 32 | + restart: "no" |
| 33 | + |
| 34 | + # ============================================ |
| 35 | + # 🎯 Gateway 測試 |
| 36 | + # ============================================ |
| 37 | + gateway-test: |
| 38 | + build: |
| 39 | + context: . |
| 40 | + dockerfile: Dockerfile.test |
| 41 | + container_name: vsmonster-gateway-test |
| 42 | + ports: |
| 43 | + - "3333:3333" |
| 44 | + volumes: |
| 45 | + - ./dev-test-results:/app/dev-test-results |
| 46 | + environment: |
| 47 | + - NODE_ENV=development |
| 48 | + command: | |
| 49 | + /bin/bash -c " |
| 50 | + pnpm install && |
| 51 | + pnpm --filter @vsmonster/gateway build && |
| 52 | + echo '✅ Gateway 建構成功' > /app/dev-test-results/gateway-test.log && |
| 53 | + pnpm --filter @vsmonster/gateway dev |
| 54 | + " |
| 55 | + healthcheck: |
| 56 | + test: ["CMD", "curl", "-f", "http://localhost:3333/health"] |
| 57 | + interval: 10s |
| 58 | + timeout: 5s |
| 59 | + retries: 3 |
| 60 | + restart: "no" |
| 61 | + |
| 62 | + # ============================================ |
| 63 | + # 🖥️ Mission Control 測試 |
| 64 | + # ============================================ |
| 65 | + mission-control-test: |
| 66 | + build: |
| 67 | + context: . |
| 68 | + dockerfile: Dockerfile.test |
| 69 | + container_name: vsmonster-mission-test |
| 70 | + ports: |
| 71 | + - "3001:3001" |
| 72 | + volumes: |
| 73 | + - ./dev-test-results:/app/dev-test-results |
| 74 | + environment: |
| 75 | + - NODE_ENV=development |
| 76 | + command: | |
| 77 | + /bin/bash -c " |
| 78 | + pnpm install && |
| 79 | + pnpm --filter @vsmonster/mission-control build && |
| 80 | + echo '✅ Mission Control 建構成功' > /app/dev-test-results/mission-test.log && |
| 81 | + pnpm --filter @vsmonster/mission-control start |
| 82 | + " |
| 83 | + healthcheck: |
| 84 | + test: ["CMD", "curl", "-f", "http://localhost:3001"] |
| 85 | + interval: 10s |
| 86 | + timeout: 5s |
| 87 | + retries: 3 |
| 88 | + depends_on: |
| 89 | + - gateway-test |
| 90 | + restart: "no" |
| 91 | + |
| 92 | + # ============================================ |
| 93 | + # 📸 E2E 截圖測試 |
| 94 | + # ============================================ |
| 95 | + e2e-test: |
| 96 | + build: |
| 97 | + context: . |
| 98 | + dockerfile: Dockerfile.test |
| 99 | + container_name: vsmonster-e2e-test |
| 100 | + volumes: |
| 101 | + - ./dev-test-results:/app/dev-test-results |
| 102 | + environment: |
| 103 | + - NODE_ENV=development |
| 104 | + - PLAYWRIGHT_VIDEO=on |
| 105 | + - PLAYWRIGHT_SCREENSHOT=on |
| 106 | + command: | |
| 107 | + /bin/bash -c " |
| 108 | + pnpm install && |
| 109 | + pnpm exec playwright install chromium --with-deps && |
| 110 | + pnpm --filter @vsmonster/mission-control build && |
| 111 | + pnpm --filter @vsmonster/mission-control test:e2e || true && |
| 112 | + cp -r packages/mission-control/test-results/* /app/dev-test-results/ 2>/dev/null || true && |
| 113 | + cp -r packages/mission-control/playwright-report /app/dev-test-results/ 2>/dev/null || true && |
| 114 | + echo '✅ E2E 測試完成' |
| 115 | + " |
| 116 | + depends_on: |
| 117 | + mission-control-test: |
| 118 | + condition: service_healthy |
| 119 | + restart: "no" |
| 120 | + |
| 121 | +# ============================================ |
| 122 | +# 🗂️ 測試完不保留 volumes |
| 123 | +# ============================================ |
| 124 | +# 使用 docker-compose down -v 清除所有數據 |
0 commit comments