我创建了一个 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
环境变量不正确,不需要设置。
慕标5832272
TA贡献1966条经验 获得超4个赞
我在运行 Flask 应用程序时找到了解决方案,我必须指定我想在 0.0.0.0 上运行它,即使我的代码是这么说的。这是通过将 Dockerfile 中的最后一个命令更改为CMD ["flask", "run", "--host=0.0.0.0"]
. 现在它可以正常工作了。
添加回答
举报
0/150
提交
取消