九號工具站
返回列表

QA 必學 Docker 實戰指南:測試環境管理、容器化測試、CI/CD 整合完全教學

QA 工程師必備的 Docker 技能完全教學,涵蓋測試環境一鍵啟動、容器化測試執行、多環境管理、CI/CD 整合等實際場景,附可直接套用的指令和設定範例。

Docker QA 測試環境 容器化 CI/CD Docker Compose DevOps

最後更新: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 日常工作的完整場景
ℹ️

一般聲明

本站提供之資訊僅供參考,不保證其完整性與正確性。使用者應自行判斷資訊之適用性。

意見反饋