docker在dubbo项目中的配置

2018-12-01  本文已影响0人  雨中星辰0

某些部署方案需要动态指定服务注册的地址。例如,docker bridge网络模式需要指定用于外部网络通信的注册主机IP。Dubbo在启动阶段提供两对系统属性,用于设置外部通信的IP和端口地址。

  1. 以上四种配置是可选的。如果没有配置,Dubbo将自动获得IP和端口。请根据部署方案灵活选择。
  2. Dubbo支持多协议。如果应用程序同时公开多个不同的协议服务,并且需要为每个服务单独指定IP或端口。请分别在上述属性之前添加协议前缀。例如:
  • HESSIAN_DUBBO_PORT_TO_BIND hessian 协议绑定端口
  • DUBBO_DUBBO_PORT_TO_BIND dubbo dubbo协议绑定端口
  • HESSIAN_DUBBO_IP_TO_REGISTRY hessian协议注册IP
  • DUBBO_DUBBO_IP_TO_REGISTRY dubbo协议注册IP
  1. PORT_TO_REGISTRY 或者 IP_TO_REGISTRY不会被用作默认 PORT_TO_BIND or IP_TO_BIND,但反之亦然。
  • 如果设置PORT_TO_REGISTRY=20881 IP_TO_REGISTRY=30.5.97.6,则 PORT_TO_BIND IP_TO_BIND不会受到影响。
  • 如果设置PORT_TO_BIND=20881 IP_TO_BIND=30.5.97.6,则 PORT_TO_REGISTRY=20881 IP_TO_REGISTRY=30.5.97.6 默认为。

dubbo-docker-sample 本地操作过程:

  1. 将项目克隆到本地
git clone git@github.com:dubbo/dubbo-docker-sample.git
cd dubbo-docker-sample
  1. 打包当地的maven
mvn clean install  
  1. 通过docker build构建一个镜像
docker build --no-cache -t dubbo-docker-sample . 

Dockerfile

FROM openjdk:8-jdk-alpine
ADD target/dubbo-docker-sample-0.0.1-SNAPSHOT.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar
  1. 从镜像创建和运行容器
# 由于我们使用zk注册中心,首先我们启动zk容器
docker run --name zkserver --restart always -d zookeeper:3.4.9
docker run -e DUBBO_IP_TO_REGISTRY=30.5.97.6 -e DUBBO_PORT_TO_REGISTRY=20881 -p 30.5.97.6:20881:20880 --link zkserver:zkserver -it --rm dubbo-docker-sample

假设主机IP为30.5.97.6。
设置提供程序以通过环境变量注册注册中心的IP地址和端口 DUBBO_IP_TO_REGISTRY=30.5.97.6 DUBBO_PORT_TO_REGISTRY=20881
实现端口映射-p 30.5.97.6:20881:20880, 其中 20800 是dubbo自动选择的侦听端口。没有监控IP配置,因此它将监听0.0.0.0(所有IP)。
启动后,提供者的注册地址为 30.5.97.6:20881, 容器的监听地址为: 0.0.0.0:20880

  1. 测试
    另一个主机或容器执行
telnet 30.5.97.6 20881
ls
invoke com.alibaba.dubbo.test.docker.DemoService.hello("world")

以上内容翻译自:
https://github.com/dubbo/dubbo-samples/tree/b95ca08af9f207116ec70631559df4073fe4d75e/dubbo-samples-docker

上一篇下一篇

猜你喜欢

热点阅读