feat(storage): S3 相容物件儲存支援(cloud-ready-s3-storage) #55
Reference in New Issue
Block a user
Delete Branch "feat/cloud-ready-s3-storage"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
摘要
延續 P1 雲原生改造方向,規劃並實作將上傳檔案(課程圖片、教練證照、聊天室圖片)改存 S3 相容物件儲存,實現 container 無狀態化。
本次僅包含程式碼部分(OpenSpec tasks 1-3):
config/filesystems.php:publicdisk 的 driver 改吃FILESYSTEM_DISKenv,既有 6 個Storage::disk('public')呼叫點零改動.env.example:FILESYSTEM_DISK維持local預設(本機開發不受影響),補齊 R2 相容的AWS_ENDPOINT/AWS_URL/AWS_USE_PATH_STYLE_ENDPOINTstorage:migrate-to-s3一次性遷移指令(支援--dry-run,失敗不中斷、不刪本機檔案)R2 帳號申請、VPS 部署與實際切換(tasks 4-6)暫緩,等 Hank 申請好 S3 相容服務帳號後再繼續,已在
.env.example與 command 裡加註 TODO(2026-08-03) 標記。測試
php artisan test:239 passed / 578 assertions,無回歸完整規劃見
openspec/changes/cloud-ready-s3-storage/。實作 cloud-ready-s3-storage 的程式碼部分(tasks 1-3): - config/filesystems.php:public disk 的 driver 改吃 FILESYSTEM_DISK env, 切換為 s3 時不需改動既有 6 個 Storage::disk('public') 呼叫點 - .env.example:FILESYSTEM_DISK 維持 local 預設(本機無 S3 服務),補齊 AWS_ENDPOINT/AWS_URL/AWS_USE_PATH_STYLE_ENDPOINT 供 R2 等服務使用 - 新增 storage:migrate-to-s3 指令:一次性把 storage/app/public 既有檔案 上傳到 S3,來源固定讀本機磁碟(不受 FILESYSTEM_DISK 影響),支援 --dry-run,失敗不中斷且不刪除本機檔案 - 新增測試:遷移指令(上傳/dry-run/部分失敗)+ public disk 在 local driver 下零 AWS credentials 也能正常運作 239 tests passed / 578 assertions,容器內驗證無回歸。 R2 環境準備、VPS 部署與實際切換(tasks 4-6)待 Hank 自行處理。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011LpcY9b7y9x4fusHBTXciQ