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

M1芯片Mac下Docker Nginx报Host is unreachable上游连接502错误

问题修复方案

根因说明

该问题是M1芯片Mac的Docker Desktop特性、配置疏漏共同导致,Ubuntu下运行正常是因为Linux原生Docker网络实现与macOS Docker(运行在虚拟化层)差异较大。

修复步骤

    1. 修复业务服务监听地址配置
      你的前端服务platform-ui、management-console-ui启动后默认大概率监听的是容器内的127.0.0.1,导致其他容器无法访问。修改启动命令,指定监听所有网卡地址0.0.0.0:
      以React脚手架的yarn start为例,修改package.json的启动脚本为:
    "start": "HOST=0.0.0.0 PORT=8080 react-scripts start"
    

    需确认platform-ui容器内确实监听8080端口,和nginx upstream配置的端口完全一致。

    1. 补全Docker Compose网络关联配置
      你当前的reverse-proxy服务没有显式关联其他业务服务的网络,M1版Docker的默认网桥偶发会出现DNS解析/路由异常,补全配置即可:
      在docker-compose.yml的reverse-proxy配置块添加links字段:
    reverse-proxy:
      image: reverse-proxy:latest
      depends_on:
        - platform-ui
        - management-console-ui
        - web-platform
      links:
        - platform-ui
        - management-console-ui
        - web-platform
      ports:
        - "8080:8080"
        - "8081:8081"
    
    1. 修复M1 Docker架构兼容性问题
      Docker Desktop 3.6.0对M1芯片的支持存在已知网络bug,且如果你的镜像(尤其是Nginx、业务镜像)是amd64架构构建的,在M1上转译运行会出现网络不可达问题:
    2. 升级Docker Desktop到最新稳定版,至少高于4.0.0版本
    3. 构建镜像时指定适配arm64架构,或者在docker-compose中给服务添加platform: linux/amd64强制用Rosetta转译运行:
    reverse-proxy:
      image: reverse-proxy:latest
      platform: linux/amd64
      # 其余配置保持不变
    

    所有使用非arm64原生镜像的服务都可以添加该配置规避架构兼容性问题。

    1. 验证配置生效
      执行以下命令重启所有服务:
    docker-compose down -v
    docker-compose up --build
    

    进入reverse-proxy容器执行curl验证连通性:

    docker exec -it <你的reverse-proxy容器名> bash
    curl http://platform-ui:8080
    

    如果能拿到正常响应说明连通性已恢复,再访问localhost:8080验证即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:09:04