创建 Docker 映像时无法找到 Flask 应用程序

Pyt*_*ant 2 python flask docker visual-studio-code

我希望有人能帮助我解决这个问题。当我尝试运行 docker run todolist-docker 时出现以下错误代码。

   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off

Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.
Run Code Online (Sandbox Code Playgroud)

我的文件夹目录在这里:

Folder name: todoflaskappfinal
__pycache__
static
templates
venv
App.py
Dockerfile
requirements.txt
todo.db
ToDoList.db
Run Code Online (Sandbox Code Playgroud)

在 todoflaskappfinal 文件夹中,我有一个 Dockerfile 文件:

# syntax=docker/dockerfile:1

FROM python:3.7.8

WORKDIR /tododocker

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

COPY . .

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

在 App.py 中,我已经正确设置了所有内容(我假设),显然这之间有更多代码。

#Website Configuration
app = Flask(__name__)

if __name__ == "__main__":
  app.run(debug=True, port=5000, host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

我已将 FLASK_APP 设置为 App.py,使用 venv 等创建虚拟环境。当我在终端中输入时,flask run它会正确加载网站并将其显示在 127.0.0.01 上。但是,当我尝试使用docker build --tag todolist-docker命令 then时docker run todolist-docker,错误消息出现在上面。谁能看到我做错了什么吗?

Eri*_*oen 6

FLASK_APP是在docker容器中定义的吗?Dockerfile 中没有 ENV 语句,并且您没有提到使用 docker 的 -e 或 --env 命令选项。您的容器不会从托管环境继承环境变量。

# syntax=docker/dockerfile:1

FROM python:3.7.8

WORKDIR /tododocker

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

COPY . .
# Add this:
ENV FLASK_APP=App.py

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)