我们使用Docker容器完成大部分工作,包括在我们自己的机器上进行开发。这些都是短暂的(例如,每次我们进行测试时都会开始)。
对于AWS,auth很简单 - 我们在我们的环境中拥有密钥,并将这些密钥传递给容器。
我们开始使用Google Cloud服务,而auth路径似乎比AWS更难。在进行本地开发时,gcloud auth login
运行良好。但是当在一个短暂的容器中工作时,每次都需要登录过程,而我还没有找到一种方法来使用a)环境变量或b)映射卷来保存用户凭据 - 这是将数据传递给的两种方式容器。
据我所知,唯一的途径是使用服务帐户。但我认为每个人都需要自己的服务帐户,并且需要不断更新该帐户的权限以与自己的帐户保持一致。
有更好的方法吗?
答案 0 :(得分:2)
我有同样的问题,但是我正在使用docker-compose。通过在docker-compose.yml
中添加以下内容来解决此问题:
volumes:
- $HOME/.config/gcloud:/root/.config/gcloud
答案 1 :(得分:1)
使本地容器看到gcloud凭据最简单的方法可能是将application default credentials的文件系统位置映射到容器中。
首先,做
gcloud auth application-default login
然后,将容器作为
运行docker run -ti -v=$HOME/.config/gcloud:/root/.config/gcloud test
这应该有效。我尝试使用像
这样的DockerfileFROM node:4
RUN npm install --save @google-cloud/storage
ADD test.js .
CMD node ./test.js
和test.js
文件一样
var storage = require('@google-cloud/storage');
var gcs = storage({
projectId: 'my-project-515',
});
var bucket = gcs.bucket('my-bucket');
bucket.getFiles(function(err, files) {
if (err) {
console.log("failed to get files: ", err)
} else {
for (var i in files) {
console.log("file: ", files[i].name)
}
}
})
它按预期工作。