From 2b37d46e8382b1186e62565d9006f220077c47b9 Mon Sep 17 00:00:00 2001 From: l3126596029 Date: Sat, 5 Sep 2026 07:09:47 +0800 Subject: [PATCH] =?UTF-8?q?CI=EF=BC=9Abuildx=20=E5=9B=9E=E5=88=B0=20docker?= =?UTF-8?q?-container=20=E9=A9=B1=E5=8A=A8=E5=B9=B6=E9=80=9A=E8=BF=87=20bu?= =?UTF-8?q?ildkitd=20=E9=85=8D=E7=BD=AE=E6=B3=A8=E5=85=A5=E5=9B=BD?= =?UTF-8?q?=E5=86=85=20mirror=EF=BC=9BDockerfile=20=E6=94=AF=E6=8C=81=20NP?= =?UTF-8?q?M=5FREGISTRY=20=E5=8F=82=E6=95=B0=EF=BC=88CI=20=E8=B5=B0=20npmm?= =?UTF-8?q?irror=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/release-image.yml | 11 ++++++++--- deploy/Dockerfile | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/release-image.yml b/.gitea/workflows/release-image.yml index 70d68d3..5a88400 100644 --- a/.gitea/workflows/release-image.yml +++ b/.gitea/workflows/release-image.yml @@ -105,15 +105,20 @@ jobs: env: TAGS: ${{ steps.meta.outputs.tags }} 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="" for t in $TAGS; do ARGS="$ARGS -t $t"; done - # 用 dind 内置 default builder:走 dockerd 的 registry mirror(docker-container - # 驱动是独立 BuildKit,不继承 daemon.json 的 mirrors) # provenance/sbom 必须关:阿里云 ACR 不识别 OCI empty manifest(attestation) docker buildx build \ - --builder default \ --platform linux/amd64,linux/arm64 \ --provenance=false --sbom=false \ + --build-arg NPM_REGISTRY=https://registry.npmmirror.com \ --push \ -f deploy/Dockerfile \ $ARGS \ diff --git a/deploy/Dockerfile b/deploy/Dockerfile index 9a47438..af18060 100644 --- a/deploy/Dockerfile +++ b/deploy/Dockerfile @@ -2,8 +2,12 @@ # 1) node:20-alpine 构建 Vue 前端产物(web/dist) # 2) golang:1.27.1-alpine 编译 server(go:embed 前端产物,缓存指向 /tmp 避免写权限问题) # 3) 最小运行时镜像:server 二进制 + web/dist 静态产物 +# NPM_REGISTRY:CI/受限网络下注入 npm 镜像源(默认官方源) +ARG NPM_REGISTRY=https://registry.npmjs.org FROM node:20-alpine AS frontend +ARG NPM_REGISTRY WORKDIR /build +RUN npm config set registry "$NPM_REGISTRY" COPY web/package.json web/package-lock.json* ./ RUN npm ci || npm install COPY web/ ./