GCP のサービスへの認証は、特に指定しない限り Application Default Credentials (ADC) が使用されます。
これは環境変数 GOOGLE_APPLICATION_CREDENTIALS
に認証鍵の JSON ファイルパスを入れるという方法です。
ここに正しい鍵ファイルを指定しておけば、基本的に GCP の API は特別な設定なしですぐに使うことができます。
コンテナ内で認証を通すには…
しかし、アプリの実行を Docker コンテナの中でやりたい場合どうでしょうか?
コンテナの外側の環境変数はそのまま引き継がれることはないので、コンテナ内では認証が通らなくなってしまいます。
だからといって、認証鍵のファイルは機密情報なのでリポジトリに含めるのは避けたいところです。
docker-compose で解決する
docker-compose の機能をつかって、外側のマシンにある GOOGLE_APPLICATION_CREDENTIALS
をそのままコンテナ内に持っていくことができます!
-
environment:
でコンテナ内にもGOOGLE_APPLICATION_CREDENTIALS
をつくる(値は適当に/key.json
とかでOK) -
volumes:
で外側のGOOGLE_APPLICATION_CREDENTIALS
のファイルを内側の/key.json
にマウントする
version: '3.6'
services:
app:
...
environment:
GOOGLE_APPLICATION_CREDENTIALS: /key.json
volumes:
- ${GOOGLE_APPLICATION_CREDENTIALS}:/key.json:ro