我的 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/