Files
a620906209 e08c6652a5
Run Tests / test (pull_request) Successful in 29s
chore(openspec): 歸檔 cloud-ready-zero-impact + 同步主規格
- openspec/changes/archive/2026-06-18-cloud-ready-zero-impact/:change 歸檔
- openspec/specs/compose-cloud-baseline/:新增主規格(healthcheck + override 隔離)
- openspec/specs/env-cloud-annotations/:新增主規格(.env.example 雲端標示)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 02:01:12 +08:00

2.1 KiB
Raw Permalink Blame History

compose-cloud-baseline

Docker Compose 雲端基準設定——healthcheck 使用真實端點、正式 compose 不含開發工具、dev-only 服務透過 override 隔離。

Requirements

Requirement: App service healthcheck 驗證 PHP-FPM FastCGI port

docker-compose.ymlapp service healthcheck SHALL 使用 nc -z 127.0.0.1 9000 確認 PHP-FPM FastCGI port 正在監聽,而非執行 php -v(只驗證 binary 存在)。

注意:app container 內無 HTTP server,無法透過 HTTP 打 /healthnetcat-openbsd 已在 Dockerfile 安裝。

Scenario: PHP-FPM 啟動後 healthcheck 通過

  • WHEN app container 啟動且 PHP-FPM 程序已監聽 port 9000
  • THEN nc -z 127.0.0.1 9000 回傳 exit code 0container 標記為 healthy

Scenario: PHP-FPM 未啟動時 healthcheck 失敗

  • WHEN app container 啟動但 PHP-FPM 程序尚未就緒(port 9000 未開)
  • THEN nc -z 127.0.0.1 9000 回傳非 0 exit codecontainer 維持 unhealthy 狀態直到重試成功

Requirement: 正式 compose 不含開發工具服務

docker-compose.yml SHALL 不包含 phpmyadminmailpit service 定義。這兩個服務屬開發/管理工具,不得出現在正式雲端部署的 compose 設定中。

Scenario: 只使用 docker-compose.yml 啟動

  • WHEN 執行 docker compose -f docker-compose.yml up -d
  • THEN 啟動的服務不包含 phpmyadminport 8081)及 mailpitport 8025

Requirement: 開發工具服務透過 compose.override.yml 提供

compose.override.yml SHALL 定義 phpmyadminport 8081)與 mailpitport 8025service,供本機開發與 VPS 管理使用。

Scenario: 有 override 檔時開發工具正常啟動

  • WHEN 專案根目錄存在 compose.override.yml 且執行 docker compose up -d(不指定 -f
  • THEN Docker Compose 自動合併 overridephpmyadminport 8081)與 mailpitport 8025)一同啟動

Scenario: 雲端部署排除開發工具

  • WHEN CI/CD 執行 docker compose -f docker-compose.yml up -d --remove-orphans
  • THEN phpmyadminmailpit 不啟動,不佔用任何 port 或資源