e794fddfb1
延續 P1 雲原生改造方向,規劃將上傳檔案(課程圖片、教練證照、聊天室圖片) 改存 S3 相容物件儲存,實現 container 無狀態化。核心設計:public disk driver 直接吃 FILESYSTEM_DISK env 切換,既有 6 個呼叫點零改動,本機開發 環境維持 local 預設不受影響。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011LpcY9b7y9x4fusHBTXciQ
1.9 KiB
1.9 KiB
MODIFIED Requirements
Requirement: .env.example 標示雲端必要變數
.env.example SHALL 以行內註解或正確預設值標示以下雲端部署時必須明確設定的變數:
FILESYSTEM_DISK:預設維持local(本機開發環境無 S3 相容服務可用);雲端部署時 SHALL 手動設為s3並補齊AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_BUCKET/AWS_ENDPOINT/AWS_URL/AWS_USE_PATH_STYLE_ENDPOINT等變數,此時上傳行為 SHALL 實際切換至 S3 相容物件儲存(不再只是文件註解提醒,publicdisk 驅動確實依此變數切換)LOG_CHANNEL:預設改為stderr(雲端 logging aggregator 標準;原stack/daily寫檔案不適合雲端)QUEUE_CONNECTION:預設為redisSESSION_DRIVER:預設改為redis(取代database,擴容更高效)
Scenario: 新環境照 .env.example 初始化 session driver
- WHEN 開發者以
.env.example為基礎建立.env,未手動修改SESSION_DRIVER - THEN Laravel session driver 使用 Redis
Scenario: 新環境照 .env.example 初始化 log channel
- WHEN 開發者以
.env.example為基礎建立.env,未手動修改LOG_CHANNEL - THEN Laravel 日誌寫入 stderr,可透過
docker compose logs app查看
Scenario: 新環境照 .env.example 初始化檔案儲存
- WHEN 開發者以
.env.example為基礎建立.env,未手動修改FILESYSTEM_DISK - THEN 上傳檔案寫入本機磁碟,不需任何 S3 credentials 即可完整跑起來
Scenario: 操作者閱讀 .env.example 進行雲端部署
- WHEN 操作者參照
.env.example設定雲端環境的.env - THEN 每個雲端關鍵變數旁有說明,提示預設值在雲端環境的限制與建議替代值,且
FILESYSTEM_DISK的說明明確指出改為s3後需一併設定哪些AWS_*變數