QA 必學 Docker 實戰指南:測試環境管理、容器化測試、CI/CD 整合完全教學
QA 工程師必備的 Docker 技能完全教學,涵蓋測試環境一鍵啟動、容器化測試執行、多環境管理、CI/CD 整合等實際場景,附可直接套用的指令和設定範例。
最後更新:2026-05-24
目錄
1. QA 為什麼要學 Docker?
你有沒有遇過這些情況:「我的測試環境裝不起來」「staging 環境被別人改壞了」「這個 Bug 在我的環境上重現不了」?Docker 可以一次解決這些問題。它把應用程式和所有依賴打包成一個「容器」,不管在哪台電腦上跑,環境都一模一樣。
-
環境一致性:所有 Qa 的測試環境完全相同,不再有「在我這邊沒問題」的爭議
-
一鍵啟動:Docker Compose Up 一個指令就能啟動完整的測試環境(Web + Db + Redis + ...)
-
環境隔離:每個人都有自己的容器環境,互不干擾,不怕被別人改壞
-
快速重置:環境有問題?Docker Compose Down && Docker Compose Up 重新建一個乾淨的
-
Ci/Cd 整合:在 Ci/Cd Pipeline 中用 Docker 跑測試,跟本地環境完全一致
2. 安裝與基本概念
開始之前需要安裝 Docker Desktop,然後理解三個核心概念。
-
安裝:到 Docker.Com 下載 Docker Desktop(Mac/Windows/Linux 都支援),安裝後即可使用
-
Image(映像檔):就像安裝光碟,是建立容器的模板。例如 Postgres:16 是 Postgresql 16 版的映像檔
-
Container(容器):從映像檔啟動的實例,就像從光碟安裝到電腦上。每個容器是獨立的執行環境
-
Docker Compose:用一個 Yaml 檔案定義多個容器(Web + Db + Redis),一個指令全部啟動
-
確認安裝成功:Docker --Version 和 Docker Compose Version
小提示
- Docker Desktop 會佔用不少記憶體(建議電腦至少 8GB RAM),不用時可以關閉節省資源
3. QA 最常用的 Docker 指令
QA 日常只需要用到以下這些指令,不需要學建立映像檔那些。
-
啟動容器:Docker Compose Up -D → 在背景啟動所有服務。-D 是 Detach 模式(不佔用終端機)
-
停止容器:Docker Compose Down → 停止並移除所有容器。加 -V 連資料也清除
-
查看狀態:Docker Compose Ps → 看所有容器的運行狀態(是否健康、Port 對應)
-
查看 Log:Docker Compose Logs Web → 查看 Web 服務的 Log。加 -F 即時追蹤
-
進入容器:Docker Compose Exec Web Bash → 進入 Web 容器的命令列,像 Ssh 進伺服器一樣
-
重啟單一服務:Docker Compose Restart Web → 只重啟 Web,不影響資料庫等其他服務
-
清理空間:Docker System Prune → 清理不用的映像檔和容器,釋放磁碟空間
4. 實戰:用 Docker Compose 建立測試環境
以下是一個典型的 QA 測試環境 Docker Compose 設定,包含 Web 應用、資料庫和 Redis。
-
Docker-Compose.Yml 結構:定義 Services(Web、Db、Redis)、Ports(對外的 Port)、Volumes(資料持久化)、Environment(環境變數)
-
啟動完整環境:Docker Compose Up -D → 一個指令啟動 Web + Postgresql + Redis
-
確認所有服務健康:Docker Compose Ps 確認所有容器狀態為 Running/Healthy
-
連線測試:Curl Http://Localhost:8080 測試 Web 是否正常回應
-
連線資料庫:用 Dbeaver 連到 Localhost:5432 操作測試資料庫
-
重置環境:Docker Compose Down -V && Docker Compose Up -D → 完全重建乾淨的環境
小提示
- 把 docker-compose.yml 加入版本控制(Git),確保所有 QA 用的是同一份設定
- 環境變數(帳號密碼等)用 .env 檔案管理,不要寫死在 docker-compose.yml 中
5. 在 Docker 中跑自動化測試
用 Docker 跑測試的最大好處是環境一致性——本地跑的結果跟 CI/CD 上跑的結果一樣。
-
一次性執行測試:Docker Compose Run --Rm Test Pytest Tests/ → 啟動一個臨時容器跑 Pytest,跑完自動移除
-
平行測試:用多個容器同時跑不同的測試套件,縮短整體測試時間
-
瀏覽器測試:Docker Compose 加入 Selenium Grid 或 Playwright 容器,在容器中跑 Ui 測試
-
測試資料隔離:每次跑測試前用 Docker Compose Down -V 重建資料庫,確保測試間互不干擾
-
產出報告:測試結果輸出到掛載的 Volume,方便在容器外查看報告
6. 多環境管理:Dev / Staging / QA
不同環境的設定不同(資料庫連線、API 網址等),Docker 讓你輕鬆切換。
-
用 .Env 檔切換:建立 .Env.Dev、.Env.Staging、.Env.Qa 三個檔案,啟動時指定:Docker Compose --Env-File .Env.Qa Up -D
-
用 Override 檔案:Docker-Compose.Override.Yml 只覆蓋需要改的部分,不動基礎設定
-
環境比對:在不同環境的容器中跑相同的測試,比較結果差異
-
快速切換:Alias Qa-Up='Docker Compose --Env-File .Env.Qa Up -D' → 自訂快捷指令,一鍵切換環境
7. Docker 在 CI/CD 中的應用
QA 理解 Docker 在 CI/CD 中的角色,能更有效地與 DevOps 團隊協作。
-
Ci/Cd 測試流程:Pr 建立 → Ci 啟動 Docker 容器 → 跑自動化測試 → 產出報告 → 通過則允許合併
-
Github Actions 範例:在 .Github/Workflows 中用 Services 區塊定義測試所需的資料庫和 Redis 容器
-
測試環境自動部署:每個 Pr 自動部署一個獨立的 Docker 環境供 Qa 手動測試,Pr 關閉後自動銷毀
-
映像檔版本追蹤:確認 Ci/Cd 用的 Docker 映像檔版本跟本地一致,避免「Ci 上過但本地失敗」
小提示
- 如果你的 CI/CD 測試結果跟本地不同,90% 的原因是 Docker 映像檔版本不一致。先比對版本
8. 常見問題與除錯
QA 使用 Docker 最常遇到的問題和解決方法。
-
Q:Port 衝突(Error: Port Is Already Allocated)→ A:用 Docker Ps 找出佔用 Port 的容器,Docker Stop 停掉它。或改用其他 Port
-
Q:容器啟動後立刻停止 → A:Docker Compose Logs Service_Name 看 Log 找原因。通常是設定錯誤或依賴服務沒準備好
-
Q:磁碟空間不足 → A:Docker System Prune -A 清理所有未使用的映像檔和容器。定期清理很重要
-
Q:資料庫連不上 → A:確認 Db 容器的 Port 對應正確、帳號密碼跟 .Env 一致。用 Docker Compose Exec Db Psql -U User 測試
-
Q:Mac 上 Docker 很慢 → A:Docker Desktop 設定中調整 Cpu 和記憶體分配。也可以考慮用 Orbstack 替代(更快更省資源)
重點整理
- 1 Docker 解決 QA 最大的痛點——「在我的環境上跑得好好的」,容器確保所有人的測試環境一致
- 2 學會 Docker 後,QA 可以一鍵啟動完整的測試環境,不再依賴 DevOps 幫你設定
- 3 本指南按 QA 實際需求編排,不講 Docker 的所有功能,只講 QA 需要的部分
- 4 從基礎指令到 Docker Compose 多服務編排,涵蓋 QA 日常工作的完整場景
相關連結
相關懶人包
AI 自動化測試工具完全比較 2026:Testim、mabl、Katalon AI 等 6 大工具評測
2026 年 6 大 AI 自動化測試工具深度比較,涵蓋 Testim、mabl、Katalon AI、Applitools、Codium AI、Playwright AI 的功能、價格與適用場景。
AI 輔助測試實戰:5 個場景讓你的測試效率翻倍
從測試案例生成到視覺回歸,手把手教你在日常 QA 工作中導入 AI 工具,附實際操作步驟與工具推薦。
AI 驅動的測試報告分析與缺陷預測指南:讓數據幫你找到高風險模組
教 QA 團隊用 AI 工具分析測試報告、預測高風險模組、自動產出缺陷趨勢報告,從被動修 Bug 轉為主動預防,附實際工具與操作步驟。
一般聲明
本站提供之資訊僅供參考,不保證其完整性與正確性。使用者應自行判斷資訊之適用性。