无法在 docker 容器中使用 gunicorn 连接到烧瓶应用程序

我有一个烧瓶应用程序,我正在尝试使用 gunicorn 在 docker 容器内运行它。


这是我的 dockerfile


FROM python:3.6


WORKDIR /app


COPY ./requirements.txt /.requirements.txt


COPY . /app


# Install any needed packages specified in requirements.txt

RUN pip install -r requirements.txt


EXPOSE 8000


ENV FLASK_APP=<some_name>

ENV FLASK_ENV=development



CMD gunicorn -b :8000 -w 4 app:app

这就是我运行容器的方式 -


docker run <name>

这就是我测试它的方式-


    curl -X POST http://172.17.0.2:8000/login -H 'cache-control: no-cache' -H 'content-type: application/json' -d '<SOME_PAYLOAD>'

curl: (7) Failed to connect to 172.17.0.2 port 8000: Operation timed out

我在这个网站上浏览了几个答案

据我所知,我是

  1. 暴露端口

  2. 命中正确的 IP

  3. 在我的主机上点击正确的端口

  4. 将主机上的端口映射到我的 docker 容器。

为什么这个操作超时?

我也试过

  1. CMD gunicorn -b 0.0.0.0:8000 -w 4 app:app 这应该映射一切

  2. docker run -p 8000:8000 iterative,这应该强制主机和容器上的端口之间的映射。

但无济于事。

在我的电脑上,该应用程序运行良好。

为什么它在 docker 容器中不起作用?


慕虎7371278
浏览 273回答 3
3回答

GCT1015

您运行的 docker 容器不正确docker&nbsp;run&nbsp;-p&nbsp;8080:8080&nbsp;<the-name-of-your-image>假设您的 Dockerfile 正在获取正确的文件,这应该可以解决问题转到 localhost:8080 进行验证

慕神8447489

根据我的经验,我发现以下方法在处理 gunicorn 和 docker for flask 时更有效。我建议你在 Dockerfile 中运行 CMD,如下所示:CMD ["gunicorn", "-b", "0.0.0.0:8000", "<scriptname>:<runtimefunction>"]您的情况下的脚本名称很可能是“app.py”和运行时函数“app”。只是为了表明我的建议:在 app.pyfrom flask import Flaskapp = Flask(__name__)@app.route("/")def home():&nbsp; &nbsp; return "Hello, World!"if __name__ == "__main__":&nbsp; &nbsp; app.run(debug=True)还要添加工人:CMD ["gunicorn", "-w", "5", "-b", "0.0.0.0:8000", "<scriptname>:<runtimefunction>"]希望这可以帮助。

慕妹3242003

我也遇到了这个问题,当然问题是我在工具链的某个地方指定了一个不同的端口。请仔细检查您的端口!app.pyfrom flask import Flaskapp = Flask(__name__)@app.route('/')def index():&nbsp; &nbsp; return "example"文件FROM foo-image:tag...RUN pip3 install gunicorn FlaskCOPY *.py /app/WORKDIR /appEXPOSE 8001CMD ["gunicorn", "-b", "0.0.0.0:8001", "--workers", "2", "app:app"]运行命令https://docs.docker.com/engine/reference/run/#expose-incoming-portsdocker run -p 8001:8001 "$CONTAINER_TAG"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python