如何将经过身份验证的状态从云构建器传递到 docker?

Alg*_*dyz 6 google-cloud-build google-artifact-registry

我想使用 Google Cloud Build 来构建我的 docker 镜像。这些 docker 镜像使用从 Google Artifact Registry 下载的私有包。

构建器本身已通过身份验证并且可以使用该npx google-artifactregistry-auth命令。但我无法在 docker 构建过程中调用它。

当我在本地构建映像时,我将凭据传递到 Dockerfile 中,如下所示: --build-arg GOOGLE_CREDS=\"$(cat $GOOGLE_APPLICATION_CREDENTIALS)\"

有没有办法让这项工作开箱即用,或者我是否必须创建一个单独的服务帐户并将其密钥作为云构建的秘密上传?有点烦人,因为这两个服务都在谷歌云上......

编辑:根据请求,我添加了有关在本地构建工件注册表时如何处理工件注册表的信息。我的泊坞窗命令是:

docker build --rm --build-arg GOOGLE_CREDS=\"$(cat $GOOGLE_APPLICATION_CREDENTIALS)\" -f 'Dockerfile' -t image:latest .

Run Code Online (Sandbox Code Playgroud)

docker 镜像的相关部分是:

ARG GOOGLE_CREDS
ENV GOOGLE_APPLICATION_CREDENTIALS=/credentials.json
RUN echo ${GOOGLE_CREDS} > $GOOGLE_APPLICATION_CREDENTIALS
COPY .npmrc_template /root/.npmrc

RUN npx google-artifactregistry-auth ~/.npmrc 
RUN yarn install --silent
Run Code Online (Sandbox Code Playgroud)

.npmrc_template 包含有关私有存储库的详细信息,但没有密码。google-artifactregistry-auth然后通过命令填充

gui*_*ere 4

您需要将 cloudbuild 网络显式添加到您的 Docker Build 中,如下所示

docker build --rm -f 'Dockerfile' -t image:latest --network=cloudbuild .
Run Code Online (Sandbox Code Playgroud)