![](/img/trans.png)
[英]Passing Google Cloud credentials into a Docker container during build performed by Google Build?
[英]How to pass google cloud application credentials file to docker container
我想將我的 Google Cloud Platform 服務帳戶 JSON 憑證文件傳遞給 docker 容器,以便該容器可以訪問雲存儲桶。 到目前為止,我嘗試將文件作為運行命令的環境參數傳遞,如下所示:
docker run -p 8501:8501 --env GOOGLE_APPLICATION_CREDENTIALS=/Users/gcp_credentials.json" -t -i image_name
docker run -p 8501:8501 -e GOOGLE_APPLICATION_CREDENTIALS=/Users/gcp_credentials.json" -t -i image_name
但是沒有任何效果,我在運行 docker 容器時總是得到以下錯誤:
W external/org_tensorflow/tensorflow/core/platform/cloud/google_auth_provider.cc:184] 獲取 Google 身份驗證承載令牌的所有嘗試均失敗,返回空令牌。 從文件中檢索令牌失敗,顯示“未找到:無法找到憑據文件。”。
如何將 google 憑據文件傳遞到在我的個人筆記本電腦上本地運行的容器?
您不能“傳遞”外部路徑,但必須將 JSON 添加到容器中。
兩種方法:
秘密- 使用 docker 群模式。
優點是,秘密是加密的。 秘密在安裝到容器時被解密。
我在本地環境中登錄 gcloud,然后將該 json 文件作為卷共享到容器中的同一位置。
這是一篇關於如何使用以下相關摘錄進行操作的好帖子: 在本地測試容器時使用 Google Cloud 用戶憑據
本地登錄
要在本地環境中獲取默認用戶憑據,您必須使用 gcloud SDK。您有 2 個命令來獲取身份驗證:
gcloud auth login 以在所有后續 gcloud 命令上進行身份驗證 gcloud auth application-default login 以在“眾所周知”的位置本地創建您的 ADC。
注意憑據的位置
Google 授權庫嘗試通過按此順序執行檢查來獲取有效憑據
查看環境變量
GOOGLE_APPLICATION_CREDENTIALS
值。 如果存在,則使用它,否則……查看元數據服務器(僅在 Google Cloud Platform 上)。 如果它返回正確的 HTTP 代碼,請使用它,否則...如果存在用戶憑證 JSON 文件,請查看“知名”位置“知名”位置是在 linux 上:
~/.config/gcloud/application_default_credentials.json
在 Windows 上:%appdata%/gcloud/application_default_credentials.json
與容器共享卷
因此,您必須像這樣運行本地 docker 運行命令
ADC=~/.config/gcloud/application_default_credentials.json\docker運行\
-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
-v ${ADC}:/tmp/keys/FILE_NAME.json:ro \ <IMAGE_URL>
注意:這僅適用於本地開發,在 Google Cloud Platform 上,服務的憑據會自動為您插入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.