You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose部署Flask API无法外部访问问题求助

解决Docker Compose部署Flask API公网无法访问的问题

以下是针对该问题的排查和解决步骤:

  • 确认Flask启动命令是否正确生效
    必须明确指定Flask监听所有网卡,启动命令需包含--host=0.0.0.0参数,示例:

    flask run --host=0.0.0.0 --port=5000
    

    若直接运行脚本,需确保代码里写死监听配置:

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

    很多情况是代码里配置了但启动命令没带参数,导致Flask默认只监听容器内的127.0.0.1,仅容器内部可访问。

  • 检查Docker Compose端口映射配置
    确保docker-compose.yml里的端口映射绑定到VM的所有网卡,而非仅本地回环地址,正确配置示例:

    services:
      flask-api:
        build: .
        ports:
          - "0.0.0.0:5000:5000"
    

    若写成127.0.0.1:5000:5000,端口只会绑定到VM的本地回环,公网无法访问。

  • 验证容器内部监听状态
    进入Flask容器,检查端口监听情况:

    docker exec -it <容器名或ID> bash
    # 若容器无netstat,先安装
    apt update && apt install -y net-tools
    # 查看5000端口监听
    netstat -tulpn | grep 5000
    

    输出需显示0.0.0.0:5000或:::5000,若为127.0.0.1:5000,说明Flask未正确监听所有网卡,回到第一步修正启动命令。

  • 检查VM主机的端口绑定状态
    在VM上执行命令,确认5000端口绑定到所有网卡:

    ss -tulpn | grep 5000
    

    若输出为127.0.0.1:5000,说明Docker Compose端口映射配置有误,回到第二步修正。

  • 确认Flask路由配置
    检查访问的路径是否正确,比如若接口路由是/api,公网访问需用http://123.43.210.230:5000/api,而非根路径/。

内容的提问来源于stack exchange,提问作者cd91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 07:43:15