JasonLaw
V2EX  ›  Flask

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

  •  
  •   JasonLaw · Nov 24, 2020 · 5700 views
    This topic created in 1996 days ago, the information mentioned may be changed or developed.

    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 replies    2020-11-24 14:05:16 +08:00
    dilu
        1
    dilu  
       Nov 24, 2020
    大哥,你第二中方法没有映射端口啊......
    kosmosr
        2
    kosmosr  
       Nov 24, 2020
    了解一下-p 参数你就知道了
    acmore
        3
    acmore  
       Nov 24, 2020
    你的这两条容器运行命令都是可以的。
    我按你的 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  
       Nov 24, 2020
    @dilu
    @kosmosr

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

    我记起来了🤕,我之前还看过 https://github.com/docker/for-mac/issues/2716 这个 issue,就是没想起这个原因。
    taolu
        9
    taolu  
       Nov 24, 2020
    @JasonLaw #8 我也是之前踩过坑才记得
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3309 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 11:46 · PVG 19:46 · LAX 04:46 · JFK 07:46
    ♥ Do have faith in what you're doing.