【问题标题】:Could not locate a Flask application when creating a Docker Image创建 Docker 映像时找不到 Flask 应用程序
【发布时间】:2021-08-31 19:39:00
【问题描述】:

我希望有人可以帮助我解决这个问题。当我尝试运行 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.

我的文件夹目录在这里:

Folder name: todoflaskappfinal
__pycache__
static
templates
venv
App.py
Dockerfile
requirements.txt
todo.db
ToDoList.db

在 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"]

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

#Website Configuration
app = Flask(__name__)

if __name__ == "__main__":
  app.run(debug=True, port=5000, host='0.0.0.0')

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

【问题讨论】:

  • 错误消息表明它正在寻找带有小写 aapp.py,但您似乎拥有带有大写 AApp.py。修复文件名的大小写有帮助吗?你能在没有 Docker 的情况下在原生 Python 中运行这个应用程序吗?

标签: python docker flask visual-studio-code


【解决方案1】:

docker 容器中是否定义了 FLASK_APP? 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"]

【讨论】:

  • 嘿,对不起,现在我真的很困惑。我需要向 Dockerfile 添加什么 ENV 语句?
  • 尝试在 Dockerfile 中的 CMD 行之前添加 ENV FLASK_APP=App.py。或者使用 docker run -e FLASK_APP=App.py todolist-docker。后者会覆盖 Dockerfile 中已经定义的任何环境变量。
  • 嘿,非常感谢!这实际上解决了所有问题,以及我在使用 sql 数据库时遇到的错误。
  • 不客气。最后,考虑一些为 Python 代码构建 Docker 容器的最佳实践。例如:docker.com/blog/containerized-python-development-part-1。您现在所做的肯定会奏效,但根据您的 requirements.txt 文件中的内容,您的图像可能会占用在 pip 下创建的文件中的大量空间,而您在运行时不需要这些空间。
猜你喜欢
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 2021-01-24
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多