4

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

构建器本身经过身份验证,可以使用该npx google-artifactregistry-auth命令。但我不能在 docker build 过程中调用它。

当我在本地构建映像时,我将我的凭据传递给 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 .

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

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

4

1 回答 1

3

您需要明确地将 cloudbuild 网络添加到您的 Docker Build中,就像这样

docker build --rm -f 'Dockerfile' -t image:latest --network=cloudbuild .
于 2021-06-24T07:17:49.250 回答