我是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时,它说连接重置...
开发服务器提示显示的事实:
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/