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

容器已运行但无法访问Docker部署的Flask API问题求助

问题排查与解决步骤

1. 核心修复:添加端口映射

你的docker-compose.yml里api服务没配置端口映射,这是Windows下无法访问的关键原因:
Linux环境下Docker容器IP可直接被主机访问,但Windows下Docker运行在Hyper-V/WSL2虚拟机中,容器IP属于虚拟机内网,主机没法直接访问,必须通过端口映射把主机端口和容器的5000端口绑定。

修改docker-compose.yml的api服务部分,新增ports配置:

services:
    api:
        container_name: api
        build:
            context: .
            dockerfile: Dockerfile
        environment:
            - BROKER_URI=redis://redis
            - BACKEND_URI=redis://redis  # 修正笔误,去掉多余的"listening on"
        depends_on:
            - worker
            - redis
        volumes:
            - ./jobs:/counter_sairus/jobs
        ports:
            - "5000:5000"  # 主机5000端口映射到容器内5000端口

2. 修正环境变量笔误

api服务的BACKEND_URI后面多了listening on,这会导致Celery无法正确连接Redis(虽不影响API访问,但会导致后续任务处理失败),必须修正:
原错误配置:

- BACKEND_URI=redis://redislistening on

修正为:

- BACKEND_URI=redis://redis

3. 正确访问方式

修改后重启服务:

docker-compose down && docker-compose up --build

之后通过**主机的localhost:5000**访问API,不要用容器的172.18.0.9或容器内的127.0.0.1(容器自身的回环地址主机无法访问)。

4. 额外排查点(若仍无法访问)

  • 检查Windows防火墙是否允许Docker Desktop或5000端口的入站连接
  • 若用WSL2后端,可尝试重启WSL实例和Docker Desktop:
    wsl --shutdown
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:22:21