春天& Docker:RMI主机名解析为0.0.0.0而不是其预期的IP地址

时间:2017-07-24 15:20:39

标签: java spring docker docker-compose rmi

我目前正在开发一个将Docker和Spring程序与RMI服务相关联的项目,我无法找到解决问题的方法。

我正在尝试通过docker-compose.yml文件将两个Spring程序部署到两个不同的容器中。第一个在地址0.0.0.0(所有内容)和特定端口(在Docker文件中也是EXPOSE)中公开了一个RMI接口。第二个是使用远程接口的RMI客户端。

要访问从另一个公开RMI服务的容器,我通过Compose文件中的links参数给它一个别名,如下所示:

services:
  rmi-service:
    ...

  rmi-client:
    ...
    links:
      - rmi-service:rmihost

当我使用docker-compose up -d启动容器时,如果我从第二个容器执行命令ping rmihost,则效果很好。但是当我尝试启动Spring RMI客户端时,出现以下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'my.rmi.client' defined in class path resource [META-INF/rmi-client-spring.xml]: Invocation of init method failed; nested exception is
org.springframework.remoting.RemoteConnectFailureException: Could not connect to remote service [rmi://rmihost:11199/businessService]; nested exception is
java.rmi.ConnectException: Connection refused to host: 0.0.0.0

我无法弄清楚为什么它不会将主机名转换为正确的IP地址,而我能够ping它。我尝试在rmihost文件中添加/etc/hosts,但它不会改变任何内容,它总是会出现相同的错误。

对此问题的任何帮助或建议将不胜感激!提前谢谢!

编辑以下是我的docker-compose.yml文件:

version: '2.1'

services:
  rmi-service:
    restart: always
    tty: true
    build: ./rmi-service/
    image: rmi-service
    container_name: rmi-service
    expose:
      - "11199"

  rmi-client:
    restart: always
    tty: true
    build: ./rmi-client/
    image: rmi-client
    container_name: rmi-client
    depends_on:
      - rmi-service
    links:
      - rmi-service:rmihost

0 个答案:

没有答案