微服务无法连接以Docker镜像运行的Axon Server问题求助
问题原因
报错日志显示product-service尝试连接localhost:8124上的Axon Server,当服务在容器中运行时,容器内的localhost指向当前容器自身,而非宿主机或同Docker网络下的其他服务,因此无法找到运行在axon-server容器中的服务。
解决方案
两种方案任选其一即可:
方案1:修改产品服务配置文件
打开ProductsService项目下的application.properties或application.yml配置文件,将Axon Server地址配置修改为对应容器服务名:
properties格式示例:axon.axonserver.servers=axon-server:8124yaml格式示例:
axon: axonserver: servers: axon-server:8124同一Docker网络下的服务可直接通过服务名作为域名互相访问,此处的
axon-server对应docker-compose中定义的Axon服务名称。方案2:通过docker-compose环境变量覆盖配置(无需修改代码)
直接修改docker-compose.yml中product-service的配置,新增环境变量即可覆盖项目中的默认配置:product-service: build: context: ./ProductsService ports: - 8090:8090 depends_on: - axon-server - discovery-service networks: - axon-demo # 新增以下配置 environment: - AXON_AXONSERVER_SERVERS=axon-server:8124 # 可选配置:启动失败自动重启,避免axon-server未完全初始化导致的连接失败 restart: on-failure
配置修改完成后,执行以下命令重新构建镜像并启动服务,确保修改的配置生效:
docker-compose up --build
内容的提问来源于stack exchange,提问作者Naresh Chaurasia
相关产品推荐
相关产品推荐

