跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 访问不到运行在 docker 里面的 flask 应用
未分類
2020 年 11 月 26 日

访问不到运行在 docker 里面的 flask 应用

访问不到运行在 docker 里面的 flask 应用

資深大佬 : JasonLaw 0

server.py 的关键内容如下:

if __name__ == '__main__':     app.run(host='0.0.0.0', port=9000) 

Dockerfile 如下:

FROM python:3.7-buster  WORKDIR /app/  COPY ./requirements.txt /app/requirements.txt RUN pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/  COPY . /app/  EXPOSE 9000 ENV FLASK_APP=server.py CMD python -m flask run --host=0.0.0.0 -p 9000 

下面这样子可以访问到 localhost:9000 。

docker container run --name user-info-pool-service -d -p 9000:9000 user-info-pool-service 

但是下面这样却不行。

docker container run --network=host --name user-info-pool-service -d user-info-pool-service 

真的好奇怪,为什么呢?

大佬有話說 (9)

  • 資深大佬 : dilu

    大哥,你第二中方法没有映射端口啊……

  • 資深大佬 : kosmosr

    了解一下-p 参数你就知道了

  • 資深大佬 : acmore

    你的这两条容器运行命令都是可以的。
    我按你的 scenario 测试了一下,只要删除掉 server.py 中的 main 部分就可以了,大概是这部分启动和 CMD 中的启动命令冲突了。我的 server.py 如下,其他的和你一样:

    from flask import Flask
    app = Flask(__name__)

    @app.route(‘/’)
    def hello_world():
    return ‘Hello, World!’

  • 資深大佬 : acmore

    @dilu
    @kosmosr

    Docker 在 host 模式下是会直接运行在宿主机网络环境中的,此时就不需要映射端口了。

  • 資深大佬 : taolu

    –network host 只适用于 Linux,不支持 win 和 mac

  • 資深大佬 : acmore

    @taolu 对的,还有可能是这种情况。

    “The host networking driver only works on Linux hosts, and is not supported on Docker Desktop for Mac, Docker Desktop for Windows, or Docker EE for Windows Server.”

  • 資深大佬 : kosmosr

    @acmore 学习到了

  • 主 資深大佬 : JasonLaw

    @taolu #5
    @acmore #6

    我记起来了

  • 資深大佬 : taolu

    @JasonLaw #8 我也是之前踩过坑才记得 访问不到运行在 docker 里面的 flask 应用

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具