无法连接到docker包含中的gunicorn的Flask应用程序

2024-09-16 14:57:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个flask应用程序,我正试图使用gunicorn在docker容器中运行它。在

这是我的文件

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

我就是这样管理集装箱的-

^{pr2}$

我就是这样测试的-

    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

我已经看过了关于这个site的答案couple

据我所知,我是

  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容器中工作?在


Tags: to端口dockerenvtxtcmdappflask
2条回答

您的docker容器运行不正确

docker run -p 8080:8080 <the-name-of-your-image>

假设你的Dockerfile得到了正确的文件,这应该可以解决这个问题

转到本地主机:8080到验证

根据我的经验,我发现以下方法在处理gunicorn和docker for flask时更有效。我建议您在Dockerfile中运行CMD,如下所示:

CMD ["gunicorn", "-b", "0.0.0.0:8000", "<scriptname>:<runtimefunction>"]

在您的情况下,脚本名很可能是“应用程序副本和运行时函数“app”。只是为了说明我的建议:

in app.py

^{pr2}$

也要添加工人:

CMD ["gunicorn", "-w", "5", "-b", "0.0.0.0:8000", "<scriptname>:<runtimefunction>"]

希望这有帮助。在

相关问题 更多 >