Django – Docker – 应用程序默认凭证不可用

我想在Docker容器中使用带有Django项目的Google Cloud SDK。 假设我想使用

from google.cloud import vision from google.cloud.vision import types 

当我使用requirements.txt文件安装google-cloud出现如下所示的错误。 在没有容器的本地机器上,它正常工作。 有没有人有一个想法,我怎么能解决这个问题?

django_1 | oauth2client.client.ApplicationDefaultCredentialsError:应用程序默认凭证不可用。 如果在Google Compute Engine中运行,则可以使用它们。 否则,必须定义环境variablesGOOGLE_APPLICATION_CREDENTIALS,指向定义凭据的文件。 有关更多信息,请参阅https://developers.google.com/accounts/docs/application-default-credentials 。

更新我在MacBook上工作,我发现在这个网站上 :

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

在这一刻,我得到如下所示的错误。 任何想法如何解决这个问题?

 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/configuration将被检查

更改

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

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

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

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