Files
CFDivePlatform/openspec/changes/cloud-ready-p1/specs/scheduler-container/spec.md
T
a620906209 d423cf5079
Run Tests / test (pull_request) Successful in 29s
feat(infra): 雲端就緒 P1 — Session/Log/Scheduler 改造
- Dockerfile:移除 cron 安裝與 scheduler crontab 設定
- docker-entrypoint.sh:移除 service cron start
- docker-compose.yml:新增 scheduler service(php artisan schedule:work)
- .env.example:SESSION_DRIVER=redis、LOG_CHANNEL=stderr、移除 LOG_STACK/LOG_DAILY_DAYS
- docs/STARTUP.md:新增 Log 查看、VPS 維護窗口操作與 Rollback 說明

VPS 部署需手動更新 .env 並執行 docker compose up -d --build(詳見 STARTUP.md §11)

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

1.1 KiB
Raw Blame History

ADDED Requirements

Requirement: Scheduler 以獨立 container 執行

docker-compose.yml SHALL 定義 scheduler service,使用 cfdive-platform image,以 php artisan schedule:work 前台輪詢方式執行 Laravel Scheduler,取代原本在 app container 內的 cron daemon。

Scenario: Scheduler container 隨 app 啟動

  • WHEN 執行 docker compose up -dapp container 已 healthy
  • THEN scheduler container 啟動並持續執行 php artisan schedule:work

Scenario: App container 重啟時 scheduler 等待就緒

  • WHEN app container 重啟中(unhealthy
  • THEN scheduler container 依 depends_on 等待 app healthy 後才啟動,避免 scheduler 在 PHP-FPM 未就緒時執行任務

Requirement: App container 不再包含 cron daemon

Dockerfile SHALL 不安裝 cron 套件,docker-entrypoint.sh SHALL 不執行 service cron start,確保 app container 職責單一(只跑 PHP-FPM)。

Scenario: App container 啟動不啟動 cron

  • WHEN app container 啟動並執行 entrypoint
  • THEN 不存在 cron daemon 程序,pgrep cron 回傳 exit code 1