V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JasonLaw
V2EX  ›  Flask

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

  •  
  •   JasonLaw · 2020-11-24 13:00:04 +08:00 · 3655 次点击
    这是一个创建于 1467 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条回复    2020-11-24 14:05:16 +08:00
    dilu
        1
    dilu  
       2020-11-24 13:14:44 +08:00
    大哥,你第二中方法没有映射端口啊......
    kosmosr
        2
    kosmosr  
       2020-11-24 13:17:39 +08:00
    了解一下-p 参数你就知道了
    acmore
        3
    acmore  
       2020-11-24 13:39:46 +08:00
    你的这两条容器运行命令都是可以的。
    我按你的 scenario 测试了一下,只要删除掉 server.py 中的 main 部分就可以了,大概是这部分启动和 CMD 中的启动命令冲突了。我的 server.py 如下,其他的和你一样:

    from flask import Flask
    app = Flask(__name__)

    @app.route('/')
    def hello_world():
    return 'Hello, World!'
    acmore
        4
    acmore  
       2020-11-24 13:41:13 +08:00
    @dilu
    @kosmosr

    Docker 在 host 模式下是会直接运行在宿主机网络环境中的,此时就不需要映射端口了。
    taolu
        5
    taolu  
       2020-11-24 13:42:41 +08:00 via iPhone   ❤️ 1
    --network host 只适用于 Linux,不支持 win 和 mac
    acmore
        6
    acmore  
       2020-11-24 13:45:24 +08:00   ❤️ 2
    @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
        7
    kosmosr  
       2020-11-24 13:55:28 +08:00
    @acmore 学习到了
    JasonLaw
        8
    JasonLaw  
    OP
       2020-11-24 14:03:08 +08:00
    @taolu #5
    @acmore #6

    我记起来了🤕,我之前还看过 https://github.com/docker/for-mac/issues/2716 这个 issue,就是没想起这个原因。
    taolu
        9
    taolu  
       2020-11-24 14:05:16 +08:00
    @JasonLaw #8 我也是之前踩过坑才记得
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2693 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:15 · PVG 13:15 · LAX 21:15 · JFK 00:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.