我創(chuàng)建了一個(gè) python 包,它是一個(gè) Flask 應(yīng)用程序。我想在 Docker 容器中運(yùn)行該應(yīng)用程序。這是我的 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我的應(yīng)用程序綁定到 0.0.0.0,因此可以從 Docker 容器外部訪問(wèn)它,如下所示:if __name__ == '__main__': app.run(host='0.0.0.0')如果需要該信息,則聲明app.py并導(dǎo)入app 變量。__init__.py當(dāng)我在沒(méi)有 Docker 的情況下在本地運(yùn)行 Flask 包時(shí),一切正常,但是當(dāng)我運(yùn)行容器 localhost:5000 時(shí),會(huì)出現(xiàn) ERR_EMPTY_RESPONSE。我使用了命令docker run -p 5000:5000 nameofimage。有什么想法為什么會(huì)發(fā)生這種情況嗎?我缺少什么?編輯我被要求發(fā)布 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貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
Flask 默認(rèn)情況下不會(huì)綁定到 5000(8000 是默認(rèn)的 IIRC),因此您需要將其作為參數(shù)傳遞給app.run
:
app.run(host="0.0.0.0",port=5000)
編輯: FLASK_APP
環(huán)境變量不正確,不需要設(shè)置。

慕標(biāo)5832272
TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
我在運(yùn)行 Flask 應(yīng)用程序時(shí)找到了解決方案,我必須指定我想在 0.0.0.0 上運(yùn)行它,即使我的代碼是這么說(shuō)的。這是通過(guò)將 Dockerfile 中的最后一個(gè)命令更改為CMD ["flask", "run", "--host=0.0.0.0"]
.?現(xiàn)在它可以正常工作了。
添加回答
舉報(bào)
0/150
提交
取消