我有一个使用环境变量的 Python 应用程序,我想使用一个 Dockerfile 和一个 docker-compose.yml 文件进行 dev\prod 设置(仅使用环境变量更改 env 文件)。
以下是我用来启动应用程序的文件:
Dockerfile:
FROM python:3.7-slim-buster
RUN apt-get update
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/excel_users_dump
COPY ./requirements.txt .
RUN pip install -r requirements.txt
COPY . .
RUN python /usr/src/app/myblumbot/main.py
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:
version: '3'
services:
bot:
build:
context: .
environment:
ENV: ${ENV}
PYTHONPATH: ${PYTHONPATH}
PYTHONBUFFERED: ${PYTHONBUFFERED}
volumes:
- states:/var/myblumbot_states
volumes:
states:
Run Code Online (Sandbox Code Playgroud)
.env(在与 docker-compose.yml 相同的目录中)
PYTHONBUFFERED=1
PYTHONPATH=/usr/src/app
ENV=DEV
Run Code Online (Sandbox Code Playgroud)
当我运行 docker-compose up
命令时,它会构建并告诉我我没有一些环境变量,因此应用程序无法启动。
env = os.environ['ENV']
Run Code Online (Sandbox Code Playgroud)
密钥错误:'ENV'
但是,如果我添加ENV VAR value在Dockerfile,一切工作良好。 …