docker-compose部署dubbo+zookeeper项目
Posted CarveStone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-compose部署dubbo+zookeeper项目相关的知识,希望对你有一定的参考价值。
文章目录
Dubbo 不单单只是高性能的 RPC 调用框架,更是 SOA 服务治理的一种方案。
- 远程通信,向本地调用一样调用远程方法。
- 集群容错
- 服务自动发现和注册,可平滑添加或者删除服务提供者。
我们常常使用 Springboot 暴露 HTTP 服务,并走 JSON 模式。但慢慢量大了,一种 SOA 的治理方案。这样可以暴露出 Dubbo 服务接口,提供给 Dubbo 消费者进行 RPC 调用。
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
docker-compose部署dubbo+zookeeper项目
Dubbo在Docker中部署时向注册中心注册的是Docker实例的IP地址,通常为:172.128.0.*,而不是宿主机的ip地址,这样如果微服务需要跨宿主机调用的话,则是调用不到的,因此就需要让dubbo在向注册中心注册服务的时候,使用的ip地址是宿主机的ip地址。
dubbo 可以通过下面的属性,在启动docker的时候进行设置
- DUBBO_IP_TO_REGISTRY — 注册到注册中心的IP地址
- DUBBO_PORT_TO_REGISTRY — 注册到注册中心的端口
- DUBBO_IP_TO_BIND — 监听IP地址
- DUBBO_PORT_TO_BIND — 监听端口
version: '3'
services:
server1:
image: carve/provider-server:latest
container_name: providerServer
build:
context: ./provider
dockerfile: Dockerfile
restart: always
working_dir: /app
ports:
- "8001:8080"
# 前面为注册到注册中心的端口,后面为docker监听的端口
- "20881:20881"
environment:
TZ: Asia/Shanghai
# 注册到注册中心的IP,这里我们选择公网IP
DUBBO_IP_TO_REGISTRY: 45.77.245.17
# 注册到注册中心的端口
DUBBO_PORT_TO_REGISTRY: 20881
DUBBO_PORT_TO_BIND: 20881
server2:
image: carve/consumer-server:latest
container_name: consumerServer
build:
context: ./consumer
dockerfile: Dockerfile
restart: always
working_dir: /app
ports:
- "8002:8080"
# 前面为注册到注册中心的端口,后面为docker监听的端口
- "20882:20882"
environment:
TZ: Asia/Shanghai
# 注册到注册中心的IP,这里我们选择公网IP
DUBBO_IP_TO_REGISTRY: 45.77.245.17
# 注册到注册中心的端口
DUBBO_PORT_TO_REGISTRY: 20882
DUBBO_PORT_TO_BIND: 20882
如果 consumer 启动失败了,可能的原因是 provider 还没注册到zookeeper,这时可以重启 consumer 容器,使用docker-compose里的restart: always
,如果是springboot jar包部署的可以用shell脚本暂停几秒钟再启动,或者用自启动的方式监听端口,如果不存在,则启动项目
启动项目
# 重新编译docer
docker-compose build --no-cache
# 启动
docker-compose up
# 关闭
docker-compose down
以上是关于docker-compose部署dubbo+zookeeper项目的主要内容,如果未能解决你的问题,请参考以下文章
dubbo+zookeeper+dubbo管理控制台实践demo