python - google.auth.exceptions.DefaultCredentialsError:在 Docker-compose 中找不到文件 /home/technophile/snap/skype/common/xyz.json
问题描述
我有一个用 python 编写的应用程序,我把它放在一个 dockerfile 和 docker-compose.yml 中。独立运行时的python文件执行完美,但是当我使用'sudo docker-compose up'运行它时,它会导致错误:当文件本身存在时找不到文件。这是我的 Docker-compose
version: '3.7'
services:
project-name:
build: ./
environment:
GOOGLE_APPLICATION_CREDENTIALS: "${GOOGLE_APPLICATION_CREDENTIALS}"
command: python3 main.py
这是错误:
Traceback (most recent call last):
project-name_1 | File "main.py", line 9, in <module>
project-name_1 | client = storage.Client()
project-name_1 | File "/usr/local/lib/python3.7/site-packages/google/cloud/storage/client.py", line 126, in __init__
project-name_1 | _http=_http,
project-name_1 | File "/usr/local/lib/python3.7/site-packages/google/cloud/client.py", line 277, in __init__
project-name_1 | _ClientProjectMixin.__init__(self, project=project, credentials=credentials)
project-name_1 | File "/usr/local/lib/python3.7/site-packages/google/cloud/client.py", line 225, in __init__
project-name_1 | project = self._determine_default(project)
project-name_1 | File "/usr/local/lib/python3.7/site-packages/google/cloud/client.py", line 244, in _determine_default
project-name_1 | return _determine_default_project(project)
project-name_1 | File "/usr/local/lib/python3.7/site-packages/google/cloud/_helpers.py", line 186, in _determine_default_project
project-name_1 | _, project = google.auth.default()
project-name_1 | File "/usr/local/lib/python3.7/site-packages/google/auth/_default.py", line 454, in default
project-name_1 | credentials, project_id = checker()
project-name_1 | File "/usr/local/lib/python3.7/site-packages/google/auth/_default.py", line 222, in _get_explicit_environ_credentials
project-name_1 | os.environ[environment_vars.CREDENTIALS]
project-name_1 | File "/usr/local/lib/python3.7/site-packages/google/auth/_default.py", line 108, in load_credentials_from_file
project-name_1 | "File {} was not found.".format(filename)
project-name_1 | google.auth.exceptions.DefaultCredentialsError: File /home/technophile/snap/skype/common/xyz.json was not found.
在运行 python 文件之前,我已经导出了这个 xyz.json 文件并且 python 文件运行良好。但是当我尝试使用 docker-compose 运行它时,问题就出现了。我什至创建了环境变量,但这也没有解决。请帮帮我!谢谢
解决方案
所以我终于找到了解决方法。通过将 Json 文件保存在 Dockerfile 所在的同一文件夹中并向 Dockerfile 添加一个COPY xyz.json xyz.json
,它就像一个魅力。
推荐阅读
- django - 在 SuccessMessageMixin 中自定义 success_message
- sql - 通过变量获取第一行号
- python - Python 使用 While 循环对负值求和
- .htaccess - .htaccess 将旧文件夹重定向到新文件夹,包括子文件夹和文件
- javascript - 单击按钮时折叠/展开手风琴
- html - 我的 HTML 链接显示“无法加载图像”而不是打开我的链接
- amazon-web-services - 轮换 IAM 用户访问密钥
- c# - 如何为集合中的属性分配特定值?
- python - Pandas dataframe.to_sql 按名称“INDEX”创建列,mysql 无法处理它的列 name="index"
- javascript - 在循环中从 PHP 文件中获取值时不更新