4

Google Cloud Build を使用して Docker イメージをビルドしたいと考えています。これらの Docker イメージは、Google Artifact Registry からダウンロードされたプライベート パッケージを使用します。

ビルダー自体は認証されており、npx google-artifactregistry-authコマンドを使用できます。しかし、docker ビルド プロセス内で呼び出すことはできません。

イメージをローカルでビルドするときは、資格情報を次のように Dockerfile に渡します。 --build-arg GOOGLE_CREDS=\"$(cat $GOOGLE_APPLICATION_CREDENTIALS)\"

これをすぐに使用できるようにする方法はありますか? それとも、別のサービス アカウントを作成し、そのキーをシークレットとしてクラウド ビルドにアップロードする必要がありますか? 両方のサービスがGoogleクラウド上にあるので、ちょっと面倒です....

編集:リクエストにより、ローカルでビルドするときにアーティファクトレジストリがどのように処理されるかに関する情報を追加しています。私の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コマンドによって入力されます

4

1 に答える 1

3

そのように、cloudbuild ネットワークを Docker Buildに明示的に追加する必要があります。

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