JasonLaw
V2EX  ›  Flask

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

  •  
  •   JasonLaw · Nov 24, 2020 · 7104 views
    This topic created in 2175 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
    dilu
    Nov 24, 2020
    1
    大哥,你第二中方法没有映射端口啊......
    kosmosr
    kosmosr
    Nov 24, 2020
    2
    了解一下-p 参数你就知道了
    acmore
    acmore
    Nov 24, 2020
    3
    你的这两条容器运行命令都是可以的。
    我按你的 scenario 测试了一下,只要删除掉 server.py 中的 main 部分就可以了,大概是这部分启动和 CMD 中的启动命令冲突了。我的 server.py 如下,其他的和你一样:

    from flask import Flask
    app = Flask(__name__)

    @app.route('/')
    def hello_world():
    return 'Hello, World!'
    acmore
    acmore
    Nov 24, 2020
    4
    @dilu
    @kosmosr

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

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