v1 (deploy-stage.sh) 走 docker save | gzip | docker load 模式,需要把 81MB tarball 一次性 POST 到 stage docker daemon /images/load API。5/4 / 5/9 兩次 驗證 VPN 下 docker daemon 對單一大 POST hang(卡 30+ 分鐘 / i/o timeout), 公司網段直連才可靠。 v2 仿 edge-ai-platform/scripts/deploy-docker.sh 改用 DOCKER_HOST=stage docker build — multi-stage build 完全在 stage daemon 上執行: - 跨網路只傳 build context(~44 MB streaming,VPN 友善) - alpine base / nodejs / go mod / pnpm install 都由 stage daemon 自己 pull - layer cache 留在 stage daemon,後續 incremental build 更快 - 5/9 VPN 下實測 work:first build ~3min、redeploy(layer cache) ~10s 連帶修: - pnpm-workspace.yaml: 加 onlyBuiltDependencies (sharp / unrs-resolver / @tailwindcss/oxide / esbuild) — pnpm 10 預設拒跑依賴 build script、 乾淨環境第一次 install 撞 ERR_PNPM_IGNORED_BUILDS - package.json: 加 packageManager: pnpm@10.30.1 — 鎖 pnpm 版本,corepack 在 stage daemon 第一次跑時不會拉到最新 pnpm 11(行為差異) - Dockerfile.stage: COPY pnpm-workspace.yaml 進 builder context、否則 容器內 install 看不到 trust list v1 (deploy-stage.sh) 保留作為公司網段直連備援;v2 是 VPN / 預設模式。
26 lines
1.2 KiB
YAML
26 lines
1.2 KiB
YAML
# pnpm 10 設定(不是 monorepo workspace、純粹用來放 onlyBuiltDependencies)
|
||
#
|
||
# 為什麼有此檔:
|
||
# pnpm 10 預設不執行依賴的 install 階段 build script(postinstall / preinstall)
|
||
# 作為 supply-chain 攻擊防護。需要明確 allow-list 哪些 package 可以跑 build script。
|
||
#
|
||
# 本機 install 不會撞是因為 ~/.config/pnpm 或 node_modules 殘留 trust;
|
||
# 但乾淨環境(如 stage docker build / CI)第一次 pnpm install 就會 ERR_PNPM_IGNORED_BUILDS。
|
||
#
|
||
# 為什麼這幾個 package 需要:
|
||
# - sharp@0.34.5 — next.js image optimization、native libvips binding,install 時 prebuild download
|
||
# - unrs-resolver@1.11.1 — eslint-config-next 用的 rust binary resolver
|
||
# - @tailwindcss/oxide — tailwindcss 4 的 rust 引擎
|
||
# - esbuild — vitest / next 內部建置工具,install 時下載對應平台 binary
|
||
#
|
||
# 如何加新項目:
|
||
# 1. CI 撞 ERR_PNPM_IGNORED_BUILDS 時看訊息列出的 package 名
|
||
# 2. 確認該 package 來源可信(npmjs / github 看 popularity)
|
||
# 3. 加到下方 onlyBuiltDependencies 並 commit
|
||
|
||
onlyBuiltDependencies:
|
||
- sharp
|
||
- unrs-resolver
|
||
- "@tailwindcss/oxide"
|
||
- esbuild
|