在docker compose yml文件中设置环境变量时找不到文件错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在docker compose yml文件中设置环境变量时找不到文件错误相关的知识,希望对你有一定的参考价值。

我在docker-compose.yml文件中设置了GOOGLE_APPLICATION_CREDENTIALS环境变量。这是我的docker-compose.yml文件的结构:

version: "2"

services:

  server:
    container_name: server

    environment:
        - GOOGLE_APPLICATION_CREDENTIALS=/dir1/dir2/file1.json

我的JSON文件出现在上面的目录中。从我的python代码,它也作为Docker容器的一部分运行,我使用这样的Google Speech API:

import io
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types

#take speech wav file and turn it into text. return text
def transcribe_file(speech_file):
    """Transcribe the given audio file."""
    client = speech.SpeechClient()

当我执行上面它抛出错误,google.auth.exceptions.DefaultCredentialsError: File /dir1/dir2/file1.json was not found.

我无法理解为什么当它出现在正确的目录中时无法找到JSON。

答案

确保将/dir1/dir2/file1.json添加到Docker镜像或将其作为卷安装。将文件存在于主机上的该位置是不够的。

以上是关于在docker compose yml文件中设置环境变量时找不到文件错误的主要内容,如果未能解决你的问题,请参考以下文章

docker-compose.yml文件

docker-compose 进阶篇

docker-compose.yml说明和编写

Docker-Compose.yml配置讲解

“docker-compose”命令为 docker-compose.yml 文件设置路径

YAML 模板文件语法