ローカルマシンで認証をする
gcloud auth application-default login
ローカルマシンでgcloud auth application-default login
コマンドを実行してアカウント認証を行うと、下記の場所にクレデンシャルファイルが格納される。
Mac: $HOME/.config/gcloud/application_default_credentials.json
Windows: %APPDATA%\gcloud\application_default_credentials.json
How Application Default Credentials works
クレデンシャルファイルをバインドマウントする
上記のクレデンシャルファイルをdocker run
のバインドマウント機能を使ってコンテナにバインドする。
docker run -v ~/.config/gcloud/application_default_credentials.json:/tmp/keys/adc.json:ro
上の書き方であれば、Dockerコンテナ内で /tmp/keys/adc.json
というパスでローカルのGCPのApplication Defaultのクレデンシャルファイルを参照できるようになる。(Macの場合)
Docker Composeを使う場合は下記のように指定すればOK。
version: '3'
services:
app:
volumes:
- ~/.config/gcloud/application_default_credentials.json:/tmp/keys/adc.json:ro
コンテナ内で参照するApplication Default認証のパスを指定する
GCPの各ライブラリは環境変数 GOOGLE_APPLICATION_CREDENTIALS
で指定された場所にあるクレデンシャルファイルを使って認証を行う。Dockerコンテナにマウントしたクレデンシャルの保存先 /tmp/keys/adc.json
を GOOGLE_APPLICATION_CREDENTIALS
にセットするように設定すれば、Dockerコンテナ内でローカル環境の認証情報を使ってGCPの各ライブラリを動かすことができるようになる。
version: '3'
services:
app:
environment:
GOOGLE_APPLICATION_CREDENTIALS: /tmp/keys/adc.json
volumes:
- ~/.config/gcloud/application_default_credentials.json:/tmp/keys/adc.json:ro