python-3.x - 尽管在同一目录中,但 .env 文件内容在 docker compose 构建期间未被替换

标签 python-3.x azure docker docker-compose .env

我的 docker-compose.yaml 文件如下:

services:
  planview:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: planview
    environment:
      - AZURE_TENANT_ID=${AZURE_TENANT_ID}
      - AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
      - AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}

所有内容都在一个目录中,因此这不会成为问题。

在我的 Python 脚本中,我还使用以下代码检索凭据

load_dotenv(".env")
client_id = os.getenv('AZURE_CLIENT_ID')
tenant_id = os.getenv('AZURE_TENANT_ID')
client_secret = os.getenv('AZURE_CLIENT_SECRET')

运行docker compose up时,会创建镜像、运行容器并执行脚本。仅当我尝试使用 docker compose build 创建具有凭据的镜像以便拥有该凭据的任何人都可以运行时,才会收到错误

ValueError: client_id should be the id of an Azure Active Directory application

我的 docker-compose 文件肯定有问题,但我看不到错误在哪里,或者是否遗漏了某些内容。我也尝试过 env_file: 但没有成功。提供的凭据绝对有效。

有人知道问题出在哪里吗?

编辑:

Dockerfile 是

FROM python:3.10

ADD planview.py .

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

COPY . /code/app

CMD ["python3", "/planview.py"]

最佳答案

尝试在 Dockerfile 中添加这些变量,以便它在运行时可用。应该看起来像这样:

COPY . /code/app

# Set the environment variables
ENV AZURE_TENANT_ID=""
ENV AZURE_CLIENT_ID=""
ENV AZURE_CLIENT_SECRET=""

CMD ["python3", "/planview.py"]

关于python-3.x - 尽管在同一目录中,但 .env 文件内容在 docker compose 构建期间未被替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76584072/

相关文章:

python-3.x - 根据动态的、递增的日期变量创建多个字典

iis - Windows Azure 语言包

docker - 如何在 Windows 上设置 docker_opts

docker - 如何使用 Docker 公开 1 个以上的端口?

python - 将 pdf 文件附加到 EmailMessage?

python-3.x - 导入错误 : No module named 'flask_jwt_extended' in PYTHON FLASK

python-3.x - 如何在 IDLE 断点处停止

azure - 是否可以将一个 ASP.NET Core 应用程序指向 2 个应用程序洞察实例

sql-server - 如何恢复我的 Azure SQL 数据库

mongodb - 蒙戈 express : failed to connect to server [mongo:27017] on first connect