为了账号安全,请及时绑定邮箱和手机立即绑定

在 Docker 中运行的 Python 包会导致 ERR_EMPTY_RESPONSE

在 Docker 中运行的 Python 包会导致 ERR_EMPTY_RESPONSE

牛魔王的故事 2023-07-11 16:16:26
我创建了一个 python 包,它是一个 Flask 应用程序。我想在 Docker 容器中运行该应用程序。这是我的 Dockerfile:FROM python:3.7FROM pytorch/pytorchMAINTAINER Nikolay Valkov nikolay1499@gmail.com# set a directory for the appWORKDIR /usr/app/# copy all the files to the containerCOPY . .# install dependenciesRUN pip install --no-cache-dir -r requirements.txtWORKDIR /usr/app/src/RUN pip install -e .WORKDIR /usr/app# tell the port number the container should exposeEXPOSE 5000ENV FLASK_APP packagename# run the commandCMD flask run我的应用程序绑定到 0.0.0.0,因此可以从 Docker 容器外部访问它,如下所示:if __name__ == '__main__':    app.run(host='0.0.0.0')如果需要该信息,则声明app.py并导入app 变量。__init__.py当我在没有 Docker 的情况下在本地运行 Flask 包时,一切正常,但是当我运行容器 localhost:5000 时,会出现 ERR_EMPTY_RESPONSE。我使用了命令docker run -p 5000:5000 nameofimage。有什么想法为什么会发生这种情况吗?我缺少什么?编辑我被要求发布 python 代码: setup.pyfrom setuptools import setupdef readme():    with open("README.rst") as f:        return f.read()setup(name = "generateme",      version = "0.1.2",      description = "Flask application to generate images with Generative Adversarial networks",      long_description = readme(),      url = "https://github.com/Nikolay1499/GenerateMe",      author = "Nikolay Valkov",      author_email = "nikolay1499@gmail.com",      license = "MIT",      packages = ["generateme"],      install_requires = [          "flask",          "gevent",          "numpy",          "Pillow",          "matplotlib",          "future",      ],      zip_safe = False,      include_package_data = True,)__init__.pyfrom flask import Flaskimport osfrom generateme.app import appfrom generateme.app import index, showImageConv, showImageLinear, showImageStyleIMAGE_FOLDER = os.path.join("static", "Photos")
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

Flask 默认情况下不会绑定到 5000(8000 是默认的 IIRC),因此您需要将其作为参数传递给app.run

app.run(host="0.0.0.0",port=5000)

编辑: FLASK_APP环境变量不正确,不需要设置。


查看完整回答
反对 回复 2023-07-11
?
慕标5832272

TA贡献1966条经验 获得超4个赞

我在运行 Flask 应用程序时找到了解决方案,我必须指定我想在 0.0.0.0 上运行它,即使我的代码是这么说的。这是通过将 Dockerfile 中的最后一个命令更改为CMD ["flask", "run", "--host=0.0.0.0"]. 现在它可以正常工作了。


查看完整回答
反对 回复 2023-07-11
  • 2 回答
  • 0 关注
  • 294 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信