Docker 主机 rmi 抛出无效权限但能够 ping

Docker host rmi throws invalid authority but able to ping

我在一个 docker 容器 A 上使用 Alfresco,运行,并在 say 33333 上公开 rmi。另一个正常的 java 服务在容器 B 上运行。两者都连接到同一个自定义桥接网络。

当容器 B 尝试使用 url rmi://alfresco:33333 通过 rmi 连接到露天时,它会抛出 java.net.MalformedURLException: invalid authority: rmi://alfresco:33333/Abcdefghi。不过同样是能够ping露天。我认为rmi中给出的url格式是错误的。如果是这样。应该用什么代替?我已经尝试了 alfrescoalfresco.abc。但同样的错误仍然存​​在。

否则我是否在 docker-compose 文件中遗漏了什么?

这是两个组合文件的示例配置。

Alfresco (Container A):

version: '3'
services:
    alfresco:
        image : xxxxxxx:latest
        container_name : alfresco
        expose: 
            - "33333"
        ports:
            - xxxx:xxxx
networks:
  default:
    external:
      name: test

Service (Container B):

version: '2.2'
services:
  abc:
    image: openjdk:8-jre-slim 
    working_dir: /home
    entrypoint: java -jar ABC.jar

networks:
  default:
    external:
      name: test 

找到原因了。 RMI 需要 IP 地址或有效域。由于 alfresco 可通过服务发现获得并且 ping 识别它,RMI 假定它是无效的 URL。因此,我必须以有效的 url 格式为露天主机提供别名。

我给了一个名为 alfresco.local 的别名,现在它可以正常工作了。

这是我修改后的户外 Compose 文件:

Alfresco (Container A)

version: '3'
services:
    alfresco:
        image : xxxxxxx:latest
        container_name : alfresco
        networks:
        default:
            aliases:
                - alfresco.local #specify an alias in some valid DNS format
        expose: 
            - "33333"
        ports:
            - xxxx:xxxx
networks:
  default:
    external:
      name: test