拒绝容器连接

问题描述 投票:0回答:1

我是Docker的新手。这是一个用DashPlotly编写的非常简单的应用程序:

FROM python:3.8-slim
COPY . /app
WORKDIR /app
RUN pip3 install --no-cache -r requirements.txt
EXPOSE 8050
CMD ["python3","./app.py","--host","0.0.0.0"]



#docker build -t test .  
#docker run -p 8051:8050 -it test

Connecting to the PostgreSQL database...   
Running on http://127.0.0.1:8050/
Debugger PIN: 479-458-364
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on

但是当浏览器指向127.0.0.1:8051时,它说连接重置...

python docker plotly
1个回答
0
投票

开发服务器提示显示的事实:

Running on http://127.0.0.1:8050/

表示在主机0.0.0.0(所有接口)上运行的指令无效。这是因为,直接使用--host运行应用程序时,无法使用python3参数,除非您编写自定义代码以接受此参数。

最佳且当前推荐的解决方案是使用flask run命令,将Dockerfile修改为使用以下行:

CMD ["flask","run","-h","0.0.0.0"]

这将使用默认端口5000运行应用程序(在容器内),因此您可能希望将EXPOSE行修改为EXPOSE 5000,以保存将端口参数传递给flask run。重建并启动:

docker run -p 8051:5000 -it test

这将使应用程序在主机系统的端口8051上可用,该端口已映射到容器内的5000。启动后,您应该看到:

Running on http://0.0.0.0:5000/
© www.soinside.com 2019 - 2024. All rights reserved.