我对如何验证docker容器上的gcloud sdk感到有点困惑。现在,我的docker文件包含以下内容:
#Install the google SDK
RUN curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz
RUN mkdir -p /usr/local/gcloud
RUN tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz
RUN /usr/local/gcloud/google-cloud-sdk/install.sh
RUN /usr/local/gcloud/google-cloud-sdk/bin/gcloud init
然而,我很困惑如何进行身份验证?当我在我的机器上运行gcloud auth application-default login
时,它会在chrome中打开一个新选项卡,提示我登录。如果在容器中的谷歌浏览器中打开新选项卡,我将如何在docker容器上输入我的凭据?
答案 0 :(得分:9)
您可以考虑在设置Docker容器时使用deb软件包,因为它是在docker hub上完成的。
那说你不应该运行$data = fgetcsv($file)
或gcloud init
或gcloud auth application-default login
...这些是启动浏览器的交互式命令。要向容器提供凭据,请使用服务帐户密钥文件。
您可以从云控制台下载一个:https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=YOUR_PROJECT或使用gcloud auth login
命令创建
gcloud
请参阅reference guide。
无论哪种方式,只要您将密钥文件添加到容器并运行
gcloud iam service-accounts keys create
您现在应该已设置,但如果要将其用作应用程序默认凭据(ADC),即在其他库和工具的上下文中,则需要将以下环境变量设置为指向密钥文件:
gcloud auth activate service-account --key-file=MY_KEY_FILE.json
有一点需要注意的是,export GOOGLE_APPLICATION_CREDENTIALS=/path/to/MY_KEY_FILE.json
工具不使用ADC,因此稍后如果您将帐户更改为其他内容,例如通过
gcloud
其他工具和库将继续通过ADC密钥文件使用旧帐户,但gcloud config set core/account my_other_login@gmail.com
现在将使用不同的帐户。
答案 1 :(得分:-1)
您可以将本地Google SDK凭据映射到图像中。 [Source]
首先使用以下方式登录:
$ gcloud auth application-default login
然后将以下内容添加到docker-compose.yaml:
volumes:
- ~/.config/:/root/.config