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

docker-compose启动Java RMI容器报Connection refused to host: localhost错误

问题根因
  • 客户端硬编码连接地址错误:你在Customer的Dockerfile启动命令里写死了localhost作为RMI服务地址,每个容器的localhost指向自身的网络命名空间,而RMI服务运行在server1容器中,自然无法连通,即使配置了SERVER_HOST环境变量也没有实际使用。
  • 缺失RMI服务端必要配置:Java RMI服务默认会把服务端所在机器的本地hostname/IP作为回调地址返回给客户端,如果不主动配置java.rmi.server.hostname参数,客户端拿到的是server1容器内部的本地地址,后续RMI调用依然会访问错误地址。
  • docker-compose配置逻辑错误:你贴出的compose文件中没有定义server1服务,同时给customer配置network_mode: host和基于容器服务名的寻址逻辑完全冲突。
解决步骤

1. 调整RMI服务端启动配置

修改Server1的Dockerfile,新增RMI必填的系统参数,必须显式指定java.rmi.server.hostname为docker compose中的服务名server1,同时固定RMI用到的所有端口避免随机端口被拦截:

FROM openjdk:8-jre-alpine
COPY target/server1-1.0.0-jar-with-dependencies.jar /server1-1.0.0-jar-with-dependencies.jar
# 请替换示例端口为你实际业务用到的RMI注册端口、远程对象端口
CMD ["/usr/bin/java", "-cp", "/server1-1.0.0-jar-with-dependencies.jar", "-Djava.rmi.server.hostname=server1", "-Dcom.sun.management.jmxremote.port=1099", "-Dcom.sun.management.jmxremote.ssl=false", "-Dcom.sun.management.jmxremote.authenticate=false", "Server"]

2. 调整客户端启动配置

修改Customer的Dockerfile,删除硬编码的localhost,改为读取环境变量中的SERVER_HOST:

FROM openjdk:8-jre-alpine
COPY target/customer-1.0.0-jar-with-dependencies.jar /customer-1.0.0-jar-with-dependencies.jar
# 通过sh执行才能读取容器内的环境变量
CMD ["sh", "-c", "/usr/bin/java -cp /customer-1.0.0-jar-with-dependencies.jar Main $SERVER_HOST"]

3. 修正docker-compose配置

补全server1服务定义,删除无效的network_mode: host配置,使用docker默认的桥接网络即可实现服务名互访:

services:
    server1:
      # 路径对应server1的Dockerfile存放目录
      build: server1
    broker:
      build: broker
    customer:
      build: customer
      environment:
        SERVER_HOST: server1
      depends_on:
        - server1

4. 额外适配建议

  • 确保RMI服务端代码中绑定的注册端口、远程对象暴露端口均为固定值,不要使用随机端口。
  • depends_on仅能保证容器启动顺序,无法保证RMI服务完全就绪,建议给客户端加连接重试逻辑,或者给server1配置端口健康检查,确认RMI端口可用后再启动customer。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:18:03