c3572682ad
Run Tests / test (pull_request) Successful in 30s
- 所有 task 驗證完成(7.1 stderr log / 7.2 無新增日誌檔 / 7.3 session 走 Redis) - 同步 env-cloud-annotations 主 spec(LOG_CHANNEL 取代 LOG_STACK + 新增 scenario) - 新增 scheduler-container 主 spec(獨立 container 取代 cron daemon) - 移至 archive/2026-06-18-cloud-ready-p1 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
1. Dockerfile 移除 cron
- 1.1 [後端] 從
Dockerfile的apt-get install -y清單移除cron - 1.2 [後端] 從
Dockerfile移除寫入/etc/cron.d/laravel-scheduler的RUN echo ...指令 - 1.3 [後端] 從
Dockerfile移除crontab /etc/cron.d/laravel-scheduler指令
2. docker-entrypoint.sh 移除 cron 啟動
- 2.1 [後端] 從
docker/php/docker-entrypoint.sh移除service cron start || cron || true這一行
3. docker-compose.yml 新增 scheduler service
- 3.1 [後端] 在
docker-compose.yml新增schedulerservice,設定如下:image: cfdive-platform、container_name: cfdive-scheduler、restart: unless-stoppedworking_dir: /var/www/、command: php artisan schedule:workvolumes: - ./:/var/www- 環境變數:
DB_CONNECTION、DB_HOST=db、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD(與 queue-worker 相同) networks: - cfdive-networkdepends_on: app: condition: service_healthy
4. .env.example 更新
- 4.1 [後端] 將
.env.example的SESSION_DRIVER=database # 雲端建議改為 redis改為SESSION_DRIVER=redis(升級為預設值,移除說明) - 4.2 [後端] 將
.env.example的LOG_CHANNEL=stack改為LOG_CHANNEL=stderr - 4.3 [後端] 從
.env.example移除LOG_STACK=daily與LOG_DAILY_DAYS=14兩行(改 stderr 後無作用)
5. 文件更新
- 5.1 [後端] 更新
docs/STARTUP.md,補充以下內容:- 服務清單新增
scheduler(docker compose ps應見cfdive-scheduler) - Log 查看方式:
docker compose logs -f app(不再有storage/logs/檔案) - VPS 維護窗口操作:說明
sed更新.env的四個指令 +docker compose up -d --build - Config cache 注意:
.env改完須清 cache(rebuild 時 entrypoint 自動處理) - Rollback 步驟:Session/Log 還原指令(不需 rebuild)+ Scheduler 還原(需 rebuild)
- 服務清單新增
6. 手動驗證(本機,不需 VPS .env)
- 6.1 [整合測試] 在本機 rebuild 後確認
cfdive-scheduler正常啟動:docker compose ps顯示 scheduler Up - 6.2 [整合測試] 確認 app container 無 cron:
docker compose exec app sh -c "which cron 2>/dev/null || echo 'cron binary not found'"(cron binary 已從 image 移除,輸出cron binary not found)
7. 手動驗證(VPS,需更新 .env 後)
- 7.1 [整合測試] 確認 log 走 stderr:呼叫任意 API 後
docker compose logs app | tail -20有日誌輸出 - 7.2 [整合測試] 確認
storage/logs/無新增日誌檔(舊檔保留) - 7.3 [整合測試] 確認 session 走 Redis:登入後
docker compose exec redis redis-cli keys "cfdiveplatform_database_*"有輸出(prefix 為 APP_NAME_database_,非 laravel_session*)