Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-Docker-应用程序默认凭据不可用_Python_Django_Python 3.x_Docker_Google Cloud Platform - Fatal编程技术网

Python Django-Docker-应用程序默认凭据不可用

Python Django-Docker-应用程序默认凭据不可用,python,django,python-3.x,docker,google-cloud-platform,Python,Django,Python 3.x,Docker,Google Cloud Platform,我想在Docker容器中使用GoogleCloudSDK和Django项目。假设我想使用 from google.cloud import vision from google.cloud.vision import types 当我使用requirements.txt文件安装googlecloud时,我得到的错误如下所示。在没有容器的本地机器上,它工作正常。有人知道我该如何解决这个问题吗 django_1 | Traceback (most recent call last): djang

我想在Docker容器中使用GoogleCloudSDK和Django项目。假设我想使用

from google.cloud import vision
from google.cloud.vision import types
当我使用
requirements.txt
文件安装
googlecloud
时,我得到的错误如下所示。在没有容器的本地机器上,它工作正常。有人知道我该如何解决这个问题吗

django_1  | Traceback (most recent call last):
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
django_1  |     response = get_response(request)
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
django_1  |     response = self.process_exception_by_middleware(e, request)
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
django_1  |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
django_1  |     return view_func(*args, **kwargs)
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view
django_1  |     return self.dispatch(request, *args, **kwargs)
django_1  |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 489, in dispatch
django_1  |     response = self.handle_exception(exc)
django_1  |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 449, in handle_exception
django_1  |     self.raise_uncaught_exception(exc)
django_1  |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 486, in dispatch
django_1  |     response = handler(request, *args, **kwargs)
django_1  |   File "/code/backend/views.py", line 23, in get
django_1  |     client = vision.ImageAnnotatorClient()
django_1  |   File "/usr/local/lib/python3.6/site-packages/google/cloud/gapic/vision/v1/image_annotator_client.py", line 147, in __init__
django_1  |     ssl_credentials=ssl_credentials)
django_1  |   File "/usr/local/lib/python3.6/site-packages/google/gax/grpc.py", line 106, in create_stub
django_1  |     credentials = _grpc_google_auth.get_default_credentials(scopes)
django_1  |   File "/usr/local/lib/python3.6/site-packages/google/gax/_grpc_google_auth.py", line 62, in get_default_credentials
django_1  |     credentials, _ = google.auth.default(scopes=scopes)
django_1  |   File "/usr/local/lib/python3.6/site-packages/google/auth/_default.py", line 282, in default
django_1  |     raise exceptions.DefaultCredentialsError(_HELP_MESSAGE)
django_1  | google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or
django_1  | explicitly create credential and re-run the application. For more
django_1  | information, please see
django_1  | https://developers.google.com/accounts/docs/application-default-credentials.
django_1 | oauth2client.client.ApplicationDefaultCredentialsError:应用程序默认凭据不可用。他们是 如果在Google计算引擎中运行,则可用。否则 必须定义环境变量GOOGLE\u应用程序\u凭据 指向定义凭据的文件。看见 了解更多信息

更新 我在MacBook上工作,我发现:

此时,我得到如下所示的错误。有什么办法可以解决这个问题吗

django_1  | Traceback (most recent call last):
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
django_1  |     response = get_response(request)
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
django_1  |     response = self.process_exception_by_middleware(e, request)
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
django_1  |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
django_1  |     return view_func(*args, **kwargs)
django_1  |   File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view
django_1  |     return self.dispatch(request, *args, **kwargs)
django_1  |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 489, in dispatch
django_1  |     response = self.handle_exception(exc)
django_1  |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 449, in handle_exception
django_1  |     self.raise_uncaught_exception(exc)
django_1  |   File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 486, in dispatch
django_1  |     response = handler(request, *args, **kwargs)
django_1  |   File "/code/backend/views.py", line 23, in get
django_1  |     client = vision.ImageAnnotatorClient()
django_1  |   File "/usr/local/lib/python3.6/site-packages/google/cloud/gapic/vision/v1/image_annotator_client.py", line 147, in __init__
django_1  |     ssl_credentials=ssl_credentials)
django_1  |   File "/usr/local/lib/python3.6/site-packages/google/gax/grpc.py", line 106, in create_stub
django_1  |     credentials = _grpc_google_auth.get_default_credentials(scopes)
django_1  |   File "/usr/local/lib/python3.6/site-packages/google/gax/_grpc_google_auth.py", line 62, in get_default_credentials
django_1  |     credentials, _ = google.auth.default(scopes=scopes)
django_1  |   File "/usr/local/lib/python3.6/site-packages/google/auth/_default.py", line 282, in default
django_1  |     raise exceptions.DefaultCredentialsError(_HELP_MESSAGE)
django_1  | google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or
django_1  | explicitly create credential and re-run the application. For more
django_1  | information, please see
django_1  | https://developers.google.com/accounts/docs/application-default-credentials.

问题是您正在将文件夹装载到
/
而不是
/root/
,在那里将检查配置

改变

docker run --rm -it -v ~/.config/gcloud:/.config/gcloud google/cloud-sdk

如果使用docker compose,则将其添加到特定服务器的yaml中

volumes:
  - ~/.config/gcloud:/root/.config/gcloud

问题是您正在将文件夹装载到
/
而不是
/root/
,在那里将检查配置

改变

docker run --rm -it -v ~/.config/gcloud:/.config/gcloud google/cloud-sdk

如果使用docker compose,则将其添加到特定服务器的yaml中

volumes:
  - ~/.config/gcloud:/root/.config/gcloud

试试这个
docker run-e“GOOGLE\u APPLICATION\u CREDENTIALS=$GOOGLE\u APPLICATION\u CREDENTIALS”--rm-it-v~/.config/gcloud:/.config/gcloud google/cloud sdk
@TarunLalwani使用您的命令后有
root@4271b8a28802:/#
仍然是相同的错误。你能在mac上运行
env
并发布所有
google
相关的环境变量吗?将任何需要私有的值替换为虚拟值。@TarunLalwani您是指我添加到更新问题中的信息吗?您需要使用服务帐户。阅读本文,试试这个
docker run-e“GOOGLE\u APPLICATION\u CREDENTIALS=$GOOGLE\u APPLICATION\u CREDENTIALS”--rm-it-v~/.config/gcloud:/.config/gcloud google/cloud sdk
@TarunLalwani使用您的命令后有
root@4271b8a28802:/#
仍然是相同的错误。你能在mac上运行
env
并发布所有
google
相关的环境变量吗?将任何需要私有的值替换为虚拟值。@TarunLalwani您是指我添加到更新问题中的信息吗?您需要使用服务帐户。读这个