Docker-compose一键部署zk集群+dubbo-admin

Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

Zookeeper镜像下载

docker pull zookeeper

下载dubbo-admin
官网dubbo-admin地址apache/incubator-dubbo-ops,下载后切换branchgit checkout master(不切master没有dubbo-admin)

编译dubbo-admin
修改application.properties

vim src/main/resources/application.properties

使用下面三种方式修改都可以

#集群方式
#dubbo.registry.address=zookeeper://192.168.199.191:2181?backup=192.168.199.192:2181,192.168.199.193:2181
#单机IP方式
#dubbo.registry.address=zookeeper://172.19.165.222:2181
#容器service方式
dubbo.registry.address=zookeeper://zk:2181

注意,使用容器service方式,需要在docker-compose.yml配置中link到相关容器。

修改完后就可以打包了

mvn clean package -Dmaven.test.skip=true

将打包的jar文件复制到指定目录,如下:

#创建docker dubbo dubbo-admin文件
mkdir /usr/local/docker
mkdir /usr/local/docker/dubbo
mkdir /usr/local/docker/dubbo/dubbo-admin

#进入dubbo-admin
cd /usr/local/docker/dubbo/dubbo-admin

#将编译的 dubbo-admin-0.0.1-SNAPSHOT.jar 文件复制到当前目录
cp dubbo-admin/target/dubbo-admin-0.0.1-SNAPSHOT.jar .

接着编写Dockerfile

vim Dockerfile

FROM java:8

#作者
MAINTAINER xxx

# 注意 此处 EVN 设置注册中心地址
#ENV DUBBO_IP_TO_REGISTRY 172.19.165.222   #服务名称/IP地址
#ENV DUBBO_PORT_TO_REGISTRY 12345      #端口(默认不需要修改端口)

#挂载点
VOLUME /tmp

add dubbo-admin-0.0.1-SNAPSHOT.jar app.jar
#命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

生成镜像

docker build --rm -t dubbo-admin:1.0 .

创建docker-compose.yml 文件

version: '3'

services:
  zoo1:
    image: zookeeper:3.4  #zk镜像版本
    container_name: zoo1 
    restart: always
    hostname: zoo1 #容器名
    ports:
      - "2181:2181"  #将左端口绑定到右端口上
    environment:     #配置zk集群环境变量
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

  zoo2:
    image: zookeeper:3.4
    container_name: zoo2
    restart: always
    hostname: zoo2
    ports:
      - "2182:2181"
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888

  zoo3:
    image: zookeeper:3.4
    container_name: zoo3
    restart: always
    hostname: zoo3
    ports:
      - "2183:2181"
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888

  dubbo-admin:
    image: dubbo-admin:1.0
    container_name: dubbo-admin
    links:
      - zoo1:zk  #配置容器link名,可理解为别名
    depends_on:
      - zoo1
      - zoo2
      - zoo3
    ports:
      - 7001:7001 #主机端口:容器端口
    restart: always

注意,上面的0.0.0.0是表示可用主机IP访问且一定要这样错开。
注意service执行顺序,使用depends_on
配置link名称后,则application.properties中配置的zk路径就能打开对应的容器并注册。
测试时右端(容器)口只能用2181原因是容器通信的内部端口要与dubbo-admin一致

一键启动服务
先不要使用后台进程启动,看服务是否正常。

#Create and start containers
docker-compose up

打开服务http://IP:7001 登录,若Ok则以后台进程运行。

docker-compose up -d
#stop services
docker-compose stop
#start services
docker-compose start

查看容器日志
首先切到docker-compose.yml文件的目录,执行docker-compose ps

image.png

可以看到容器的名称,然后根据名称查看对应的日志

docker logs -ft --tail 100 dubboadmin_dubbo-admin_1

-f是跟踪日志输出 -t是输出时间 --tail是输出结尾n行

修改zk默认端口
当启动镜像时会看到以下日志:

[root@hadoopslave3 zk]# docker logs -ft --tail 100 zoo1
2018-11-21T03:24:23.275393000Z ZooKeeper JMX enabled by default
2018-11-21T03:24:23.276138000Z Using config: /conf/zoo.cfg
2018-11-21T03:24:23.675101000Z 2018-11-21 03:24:23,671 [myid:] - INFO  [main:QuorumPeerConfig@136] - Reading configuration from: /conf/zoo.cfg
2018-11-21T03:24:23.685718000Z 2018-11-21 03:24:23,685 [myid:] - INFO  [main:QuorumPeer$QuorumServer@184] - Resolved hostname: zoo3 to address: zoo3/172.18.0.4
2018-11-21T03:24:23.686546000Z 2018-11-21 03:24:23,685 [myid:] - INFO 

从日志上可以看到zk启动时读取配置文件的位置是/conf/zoo.cfg,若想改变配置文件内容,可以在本地挂载一个文件即可,如下:

version: '3'
services:
  zoo1:
    image: zookeeper:3.4
    restart: always
    container_name: zoo1
    hostname: zoo1
    volumes:
      - ./zoo.cfg:/conf/zoo.cfg
    ports:
      - "2183:2186"

此时镜像启动时就会读取本地配置文件而不是镜像里的原文件了-_-

发布到docker hub

  1. 查看images
[root@localhost disconf]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
dubbo-admin                    1.0                 dac91b8ba273        3 days ago          675MB
  1. 注册一个docker hub账号
    官网地址https://hub.docker.com/
  2. 给image打上标签
#docker tag image:tag  dockerID/imageName:version
docker tag dubbo-admin:1.0 mapbar/dubbo-admin:latest
  1. 登录你的docker hub
[root@localhost war]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: mapbar
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
  1. 上传到docker hub
docker push mapbar/dubbo-admin:latest

docker端口映射异常
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2186:ZooKeeperServer@922] - Refusing session request for client
被这个问题折腾了半天,还费力改了容器通信端口及zk默认端口(容器通信端口不会与宿主机冲突),还是报错,结果重启docker服务(service docker restart)一切ok。

学习交流群:64691032

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容