我想使用Google Cloud Build来构建我的docker图像。这些docker图像使用从Google Artifact注册表下载的私人软件包。
构建器本身经过身份验证,可以使用npx google-artifactregistry-auth
命令。但我不能在docker构建过程中调用它。
当我在本地构建映像时,我会将我的凭据传递到Dockerfile中,如下所示:--build-arg GOOGLE_CREDS="$(cat $GOOGLE_APPLICATION_CREDENTIALS)"
有没有一种方法可以开箱即用,或者我必须创建一个单独的服务帐户,并将其密钥作为秘密上传到云构建中?有点烦人,因为这两项服务都在谷歌云上。。。。
编辑:根据请求,我添加了在本地构建工件注册表时如何处理工件注册表的信息。我的docker命令是:
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
命令填充
您需要显式地将cloudbuild网络添加到Docker Build中,就像一样
docker build --rm -f 'Dockerfile' -t image:latest --network=cloudbuild .