前言
使用spring cloud alibaba dubbo官方的未例跑出预期结果很快,然而将provider或者consumer打成镜像作为容器发布,遇到了容器IP注册问题,即众所周知的容器IP注册到了ZK中,导致consumer 无法获取provider。我折腾了两天才搞定,现将方法记录下来以便以后查阅。
为了重现问题方便,只将provider打成docker镜像,consumer仍然运行在宿主机中。
前置条件
- dubbo对应角色的Provider和consumer在宿主机运行的时候,通信正常;
- provider的镜像能够构建成功。可以使用spotify的maven插件dockerfile-maven-plugin打docker镜像,也可以自行使用docker build命令自行打镜像;
- provider的宿主机已安装docker和docker-compose;
版本
dockerfile-maven-plugin:1.4.10
docker:18.09.5
docker-compose:1.18.0
provider配置
配置文件
provider使用了spring cloud alibaba dubbo,照例贴出配置文件关键内容:
pom.xml
</dependencies>
<!-- 注册中心用了spring cloud zk, 版本是2.1.1.RELEASE-->