fix(stage): Dockerfile.stage 補 preset 模型 COPY(B8 stage 修正)

B8 的 preset COPY 原本只加到 dev 的 Dockerfile.api-server,漏了 stage
實際用的 docker/Dockerfile.stage(multi-stage nginx runtime)→ stage image
無 preset 檔、/preset-models/* 下載 404。

runtime stage 補:
- COPY --from=backend-builder /src/assets/preset-models → /app/assets/preset-models
- ENV VISIONA_PRESET_MODELS_DIR=/app/assets/preset-models(baked 資產、隨 image 走)

docker build --check 通過。Reviewer 複審通過。
注意:VISIONA_PRESET_BASE_URL + nginx /preset-models/ location 由 devops 在
stage 部署時補(Reviewer 指出的兩個 DevOps 配套缺口)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
jim800121chen 2026-06-28 07:46:43 +08:00
parent 9ab1a11ea4
commit 1d4977a974

View File

@ -130,6 +130,20 @@ COPY --from=backend-builder --chown=visiona:visiona /out/api-server /usr/local
COPY --from=backend-builder --chown=visiona:visiona /out/remote-proxy /usr/local/bin/remote-proxy
RUN chmod +x /usr/local/bin/api-server /usr/local/bin/remote-proxy
# ──────────── 系統預設模型B8 ────────────
# 7 個公用預設模型 .nef 打包進 imageGET /preset-models/* 直接串流、不簽 token
# 來源backend-builder 的 /src/assets/preset-models= repo 的 visionA-backend/assets/preset-models
# 經 `COPY visionA-backend/ ./` 帶進 builder.dockerignore 未排除 assets
# 與其他 backend 產物api-server / remote-proxy同樣自 backend-builder COPY來源一致。
COPY --from=backend-builder --chown=visiona:visiona /src/assets/preset-models /app/assets/preset-models
# VISIONA_PRESET_MODELS_DIR 設成 image 內 COPY 目標的絕對路徑。
# 用 Dockerfile ENV而非 .env.stage的理由preset 檔是 baked 進 image 的固定資產(不像
# /data/storage 是掛載 volume路徑與 COPY 目標綁定、應隨 image 走,避免 .env.stage 漏設導致
# config/load.go 預設的相對路徑 `./assets/preset-models` 在 runtime workdir 讀不到而 404。
# 注意VISIONA_PRESET_BASE_URL 不在此設(由 .env.stage 帶部署域名devops 範圍)。
ENV VISIONA_PRESET_MODELS_DIR=/app/assets/preset-models
# ──────────── 共享資料目錄local-fs storage 雛形用) ────────────
# api-server 預設 VISIONA_STORAGE_LOCALFS_ROOT=/data/storage
# 由 docker-compose volume 掛 host 路徑進來image 預建 dir + chown 確保權限