我正在尝试构建一个从谷歌云存储中读/写的docker容器。当我尝试使用谷歌云存储进行身份验证时:
googleStorageClient = storage.Client.from_service_account_json(service_account_json_file)
我得到以下错误:
HTTPSConnectionPool(host='oauth2.googleapis.com', port=443): Read timed out. (read timeout=60)
从容器日志中。
我可以在容器运行的机器上ssh,并且我可以验证我是否可以运行
gcloud auth activate-service-account
从机器上,我也可以运行
gcloud auth login
。使用服务帐户凭据,我可以从机器登录和验证,并读/写到谷歌云存储,因此服务帐户凭据是有效的。
当我跑步时
docker exec -it <containerId> /bin/bash
.我能跑
ping oauth2.googleapis.com
。但是,任何使用GCP进行身份验证的尝试都会导致超时错误。
在我的Dockerfile中:
FROM ubuntu:20.04 AS base
...
RUN apt-get -yqq update && \
apt-get install -yq ca-certificates && \
apt-get install -yq ca-certificates && \
...
...
我还安装了gcloud CLI,试图在容器中进行验证。似乎我所做的一切都不允许我从googleapi中获得oauth令牌。我能做些什么来解决这个问题吗?