CI:buildx 回到 docker-container 驱动并通过 buildkitd 配置注入国内 mirror;Dockerfile 支持 NPM_REGISTRY 参数(CI 走 npmmirror)
Release 镜像 / 测试(推送前置门禁) (push) Successful in 45s
Release 镜像 / 多架构构建并推送 ACR (push) Failing after 2s

This commit is contained in:
2026-09-05 07:09:47 +08:00
parent 9931db2670
commit 2b37d46e83
2 changed files with 12 additions and 3 deletions
+8 -3
View File
@@ -105,15 +105,20 @@ jobs:
env: env:
TAGS: ${{ steps.meta.outputs.tags }} TAGS: ${{ steps.meta.outputs.tags }}
run: | run: |
# docker-container 驱动才支持多平台;mirror 注入 buildkitd 配置
# docker-container 是独立 BuildKit,不读 daemon.json
printf '[registry."docker.io"]\nmirrors = ["docker.m.daocloud.io", "docker.1ms.run"]\n' \
> /tmp/buildkitd.toml
docker buildx create --name ci --driver docker-container \
--buildkitd-config-file /tmp/buildkitd.toml >/dev/null 2>&1 || true
docker buildx use ci
ARGS="" ARGS=""
for t in $TAGS; do ARGS="$ARGS -t $t"; done for t in $TAGS; do ARGS="$ARGS -t $t"; done
# 用 dind 内置 default builder:走 dockerd 的 registry mirrordocker-container
# 驱动是独立 BuildKit,不继承 daemon.json 的 mirrors
# provenance/sbom 必须关:阿里云 ACR 不识别 OCI empty manifestattestation # provenance/sbom 必须关:阿里云 ACR 不识别 OCI empty manifestattestation
docker buildx build \ docker buildx build \
--builder default \
--platform linux/amd64,linux/arm64 \ --platform linux/amd64,linux/arm64 \
--provenance=false --sbom=false \ --provenance=false --sbom=false \
--build-arg NPM_REGISTRY=https://registry.npmmirror.com \
--push \ --push \
-f deploy/Dockerfile \ -f deploy/Dockerfile \
$ARGS \ $ARGS \
+4
View File
@@ -2,8 +2,12 @@
# 1) node:20-alpine 构建 Vue 前端产物(web/dist # 1) node:20-alpine 构建 Vue 前端产物(web/dist
# 2) golang:1.27.1-alpine 编译 servergo:embed 前端产物,缓存指向 /tmp 避免写权限问题) # 2) golang:1.27.1-alpine 编译 servergo:embed 前端产物,缓存指向 /tmp 避免写权限问题)
# 3) 最小运行时镜像:server 二进制 + web/dist 静态产物 # 3) 最小运行时镜像:server 二进制 + web/dist 静态产物
# NPM_REGISTRYCI/受限网络下注入 npm 镜像源(默认官方源)
ARG NPM_REGISTRY=https://registry.npmjs.org
FROM node:20-alpine AS frontend FROM node:20-alpine AS frontend
ARG NPM_REGISTRY
WORKDIR /build WORKDIR /build
RUN npm config set registry "$NPM_REGISTRY"
COPY web/package.json web/package-lock.json* ./ COPY web/package.json web/package-lock.json* ./
RUN npm ci || npm install RUN npm ci || npm install
COPY web/ ./ COPY web/ ./