【问题标题】:Container access to gcloud credentials denied拒绝容器访问 gcloud 凭据
【发布时间】:2021-03-23 05:50:47
【问题描述】:

我正在尝试在 Google Cloud 上实现将数据从 HL7 转换为 FHIR (https://github.com/GoogleCloudPlatform/healthcare/tree/master/ehr/hl7/message_converter/java) 的容器。但是,我无法在我的机器上本地构建容器,以便稍后部署到云中。

当我尝试使用 docker 在本地旋转图像时,总是在凭据的身份验证部分发生错误:

docker run --network=host -v ~/.config:/root/.config hl7v2_to_fhir_converter 
/healthcare/bin/healthcare --fhirProjectId=<PROJECT_ID> --fhirLocationId=<LOCATION_ID> -- 
fhirDatasetId=<DATASET_ID> --fhirStoreId=<STORE_ID> --pubsubProjectId=<PUBSUB_PROJECT_ID> -- 
pubsubSubscription=<PUBSUB_SUBSCRIPTION_ID> --apiAddrPrefix=<API_ADDR_PREFIX>

我使用的是 Windows,并且已经执行了以下命令来创建凭据:

gcloud auth application-default login

执行上述命令后,凭证保存在:

C:\Users\XXXXXX\AppData\Roaming\gcloud\application_default_credentials.json

-v ~ / .config: /root/.config 命令应该让 docker 在运行镜像时搜索凭证,但它没有。出现的错误是:

The Application Default Credentials are not available. They are available if running in Google 
Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined 
pointing to a file defining the credentials. See 
https://developers.google.com/accounts/docs/application-default-credentials for more information.

我在写什么错误?

谢谢,

【问题讨论】:

  • 1) 您对is supposed to enable the docker to search 的假设不正确。容器应用程序无法搜索主机环境。 Google ADC 仅检查已知位置,您指定的路径不是其中之一。 2) 不要引用由 CLI gcloud 创建的凭证文件。从您的目录中指定服务帐户 JSON 文件,而不是由 CLI 管理的文件。
  • 3) 使用容器挂载语法 (-v) 指定服务帐户文件。然后在启动容器时设置环境变量GOOGLE_APPLICATION_CREDENTIALS (-e) 告诉它凭据所在的位置。
  • 感谢您的帮助!!

标签: windows docker google-cloud-platform google-authentication google-cloud-sdk


【解决方案1】:

容器与系统的其余部分隔离运行,这是它的优势所在,这也是这种打包方法如此受欢迎的原因。

因此,如果您不将环境中的所有配置传递给容器运行时环境,例如 GOOGLE_APPLICATION_CREDENTIALS env var,那么它的所有配置都是无效的。

wrote an article on this。让我知道它是否有帮助,如果没有,我们将讨论阻塞点!

【讨论】:

  • 您好!感谢您的帮助!!我尝试了以下代码开始...
  • SET ADC = %appdata%/gcloud/application_default_credentials.json
  • docker run --network=host -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json -v ADC:/tmp/keys/FILE_NAME.json:ro /healthcare/bin/healthcare --fhirProjectId=&lt;PROJECT_ID&gt; --fhirLocationId=&lt;LOCATION_ID&gt; --fhirDatasetId=&lt;DATASET_ID&gt; --fhirStoreId=&lt;STORE_ID&gt; --pubsubProjectId=&lt;PUBSUB_PROJECT_ID&gt; --pubsubSubscription=&lt;PUBSUB_SUBSCRIPTION_ID&gt; --apiAddrPrefix=&lt;API_ADDR_PREFIX&gt;
  • 但仍然显示错误:java.io.IOException: Error reading credential file from environment variable GOOGLE_APPLICATION_CREDENTIALS, value '/tmp/keys/FILE_NAME.json': File does not exist.
  • 我确实放了:SET ADC="%appdata%/gcloud/application_default_credentials.json"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 2017-10-12
  • 2012-10-28
  • 2018-11-26
  • 1970-01-01
  • 2018-02-23
相关资源
最近更新 更多