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/ ./