3b0cdf96d8
P0「移除 Docker bind mount、程式碼烘進 image」的完整規劃:Dockerfile 改 multi-stage(app + web)、docker-compose.yml 拿掉五個服務的 bind mount、nginx 改本地 build 取得 public/、deploy.yml 改 build-then-up、 entrypoint 職責收斂、.dockerignore 補齊。尚未實作,僅規劃文件。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0142LC1kQb8EyV59TjHDkhWS
1.2 KiB
1.2 KiB
MODIFIED Requirements
Requirement: Scheduler 以獨立 container 執行
docker-compose.yml SHALL 定義 scheduler service,使用 cfdive-platform image(其中已於 build 階段內嵌完整程式碼,不依賴 ./:/var/www bind mount),以 php artisan schedule:work 前台輪詢方式執行 Laravel Scheduler,取代原本在 app container 內的 cron daemon。
Scenario: Scheduler container 隨 app 啟動
- WHEN 執行
docker compose up -d且appcontainer 已 healthy - THEN
schedulercontainer 啟動並持續執行php artisan schedule:work
Scenario: App container 重啟時 scheduler 等待就緒
- WHEN
appcontainer 重啟中(unhealthy) - THEN
schedulercontainer 依depends_on等待apphealthy 後才啟動,避免 scheduler 在 PHP-FPM 未就緒時執行任務
Scenario: Scheduler 不依賴主機 bind mount 取得程式碼
- WHEN 執行
docker compose -f docker-compose.yml up -d(production,不含 override) - THEN
schedulercontainer 執行的排程任務程式碼完全來自cfdive-platformimage build 時內嵌的內容,與主機端程式碼目錄是否存在無關