You need to enable JavaScript to run this app. docker-compose部署Spring Cloud Gateway访问下游微服务报500连接错误
优惠活动
大模型
产品
解决方案
定价
更多

docker-compose部署Spring Cloud Gateway访问下游微服务报500连接错误

微服务网关Docker-Compose部署连接报错修复方案

核心问题排查修复步骤

  • 修正容器通信的端口认知错误
    容器间互访不使用宿主机映射端口,仅使用容器内部监听的端口。当前配置里api_1的端口映射为"8083:8081",即宿主机的8083端口转发到api_1容器内的8081端口,因此网关访问api_1时,端口必须写容器内部的8081,不能写宿主机映射的8083。此前替换服务地址时如果使用了8083端口,必然会出现连接拒绝。
  • 确认网关配置已实际生效
    现有报错日志显示网关仍在尝试访问localhost/127.0.0.1:8083,说明修改后的路由配置没有加载到运行的网关实例中。由于网关使用的是预构建镜像cloudapi,修改本地配置后如果没有重新打包构建新镜像、没有重新启动容器拉取新镜像,运行的还是旧配置。可执行如下命令校验配置:
    # 进入网关容器查看路由配置
    docker exec -it 网关容器名称/ID sh
    # 直接读取jar包内的配置文件校验路由URI
    unzip -p /应用jar包路径 BOOT-INF/classes/application.yml | grep uri
    
    确认配置中路由地址已修改为http://api_1:8081格式,而非旧的localhost地址。
  • 验证容器网络连通性
    同一docker-compose文件下的服务会自动加入默认bridge网络,可直接通过服务名互相访问。可进入网关容器手动测试连通性:
    docker exec -it 网关容器名称/ID sh
    # 容器内执行访问api_1的请求
    curl http://api_1:8081/Publish/message
    
    如果上述命令能正常返回数据,说明网络、端口、服务状态均无问题,仅需修正网关的路由配置即可;如果仍连接失败,需要进入api_1容器执行netstat -ntlp,确认服务是否在8081端口绑定了0.0.0.0地址(如果绑定了127.0.0.1,同网络下的其他容器无法访问)。
  • 修正docker-compose.yml的配置格式问题
    现有配置存在拼写错误:端口映射的键应为ports而非port;同时依赖关系的逻辑冗余:微服务不需要依赖网关启动,可移除api_1、api_2对网关的depends_on配置,避免不必要的启动顺序阻塞。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 06:06:02