【问题标题】:Unable to connect to flask while running on docker container [duplicate]在docker容器上运行时无法连接到烧瓶[重复]
【发布时间】:2019-07-13 13:37:48
【问题描述】:

我正在尝试将一个简单的烧瓶应用程序移至 docker,但我无法弄清楚为什么无法从浏览器访问该应用程序。

码头工人撰写文件

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
      - .:/app
    environment:
      FLASK_APP: api
      FLASK_ENV: development

  redis:
    image: "redis:alpine"

码头文件

FROM python:3.7

ADD . /app
WORKDIR /app

RUN pip install -r requirements.txt
CMD ["flask", "run"]

__init__py:

def create_app(test_config=None):
  app = Flask(__name__, instance_relative_config=True)
  ...

  return app

来自 docker-compose up --build 的结果

web_1    |  * Serving Flask app "api" (lazy loading)
web_1    |  * Environment: development
web_1    |  * Debug mode: on
web_1    |  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
web_1    |  * Restarting with stat
web_1    |  * Debugger is active!
web_1    |  * Debugger PIN: 277-205-758

但是当我打开浏览器时:

The connection was reset

任何想法为什么?我看不到我缺少什么,因为服务器正在运行,但它确实会立即重置连接...

编辑:

  • 我确实尝试通过 localhost 0.0.0.0 访问它,也使用容器 IP 地址

【问题讨论】:

  • 尝试收听0.0.0.0 而不是127.0.0.1?
  • 这样做了,也尝试直接指向容器 IP 地址,但连接被重置时仍然存在同样的问题

标签: python docker flask


【解决方案1】:

试试

CMD ["flask", "run", "--host=0.0.0.0"]

【讨论】:

  • 好吧,这让我大吃一惊,为什么在 docker 上运行时需要该参数,而从普通终端运行时不需要?
  • 您正在从容器外部连接到烧瓶,因此由于跨越边界,请求不是“本地”的。 0.0.0.0 让烧瓶回答非本地请求。
  • 我试过用这个但是没有用。网页上显示的消息是“此页面无法正常工作 0.0.0.0 未发送任何数据”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
相关资源
最近更新 更多