Python 3.x Docker中的烧瓶无法检测烧瓶_ENV

Python 3.x Docker中的烧瓶无法检测烧瓶_ENV,python-3.x,docker,flask,Python 3.x,Docker,Flask,我构建了一个flask应用程序,并在docker中使用Dockerfile启动它,如下所示 FROM python:3.7 COPY requirements.txt . RUN pip install -r requirements.txt COPY . . WORKDIR /app CMD export FLASK_ENV=production ENTRYPOINT [ "python", "-u", "app.py" ] 在flask应用程序中,我为开发和生产指定了一些配置

我构建了一个flask应用程序,并在docker中使用Dockerfile启动它,如下所示

FROM python:3.7

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .
WORKDIR /app

CMD export FLASK_ENV=production    
ENTRYPOINT [ "python", "-u", "app.py" ]
在flask应用程序中,我为开发和生产指定了一些配置

if os.environ['FLASK_ENV'] == 'production':
    UPLOAD_URL = '/v1/path/to/production/server'
elif os.environ['FLASK_ENV'] == 'development':
    UPLOAD_URL = '/upload'
但是,启动脚本会导致错误,容器无法检测到FLASK_ENV,即使该命令是在Dockerfile中设置的。有人能帮忙吗

Traceback (most recent call last):
  File "app.py", line 14, in <module>
    import config
  File "/app/config.py", line 14, in <module>
    if os.environ['FLASK_ENV'] == 'production':
  File "/usr/local/lib/python3.7/os.py", line 681, in __getitem__
    raise KeyError(key) from None
KeyError: 'FLASK_ENV'

运行生成的图像时。您描述的CMD将被包装在sh-c中,然后作为命令行参数传递给您命名为入口点的程序

在应用程序中,请尝试打印。您应该看到它包含[app.py、/bin/sh、-c、export…]

如果要为映像设置环境变量,则需要Dockerfile指令。例如,您不能运行导出。。。;以这种方式设置的任何变量都将在运行行结束时丢失


运行生成的图像时。您描述的CMD将被包装在sh-c中,然后作为命令行参数传递给您命名为入口点的程序

在应用程序中,请尝试打印。您应该看到它包含[app.py、/bin/sh、-c、export…]

如果要为映像设置环境变量,则需要Dockerfile指令。例如,您不能运行导出。。。;以这种方式设置的任何变量都将在运行行结束时丢失

替换: CMD export FLASK_ENV=生产

与: 环境烧瓶\u环境=生产

ENV指令还可用于向您希望集装箱化的服务提供环境变量。

替换: CMD export FLASK_ENV=生产

与: 环境烧瓶\u环境=生产

ENV指令还可用于向希望容器化的服务提供环境变量

ENV FLASK_ENV=production    
CMD ["python", "-u", "app.py"]