使用Docker快速打包和部署运行Disconf

Docker-Disconf

Docker-Disconf是本人学习Docker后,尝试使用Docker解决Disconf打包和运行问题的作品。Disconf是分布式配置管理平台(Distributed Configuration Management Platform)的简称,使用该平台提供的Web界面,可以统一管理多个应用,多个环境的所有配置。Disconf是一个GitHub上的开源项目,在https://github.com/knightliao/disconf可以找到相关的源码和文档。Disconf-web是Disconf的服务器端,提供了用于管理分布式配置的Web界面。

准备

Docker-Disconf所使用的Dockerfile和配置样例可以从https://git.oschina.net/gongxusheng/docker-disconf.git下载。以下说明文档中的操作假设用户已经成功安装了DockerDocker-compose,并且已经把DockerDisconf目录下的文件夹上传到了/home/ubuntu目录。如果解压在了其它的目录。需要调整部分配置文件和命令。

使用Docker打包Disconf

在disconf-build目录中执行以下命令构建Docker镜像,该镜像的用于Disconf-web的打包

docker build -t yourimgs/disconf-build .

在disconf-build目录执行以下的命令,打包Disconf-war

docker run -v ${PWD}/working:/home/work/dsp/disconf-rd/working \
    -v ${PWD}/config:/home/work/dsp/disconf-rd/online-resources \
    --name disconf-build yourimgs/disconf-build

如果修改了properties文件,可以通过再次启动disconf-build容器来打包

docker start disconf-build

使用Docker Compose部署运行Disconf

如下图所示,Disconf的部署使用到了Nginx, Tomcat, MySQL, Redis和ZooKeeper:


在disconf-compose目录中执行

docker-compose up

所有容器启动正常以后,就可以通过http://yourhost:8081访问Disconf-web服务了。

Disconf客户端的配置

首先应配置disconf.properties指向http://yourhost:8081。Disconf的客户端需要访问zookeeper,会使用/DockerDisconf/disconf-build/config/zoo.properties中的配置。为了统一配置,Docker-Disconf的配置使用了disconf-zoo:2181,因此在客户端所在的主机上需要配置hosts文件,将主机名disconf-zoo映射到Docker所在的服务器ip。

(非Docker Compose方式)部署运行Disconf

【说明】本章是早期版本,操作步骤较多。推荐使用前面章节介绍的Docker Compose部署运行。

1) 启动一个Redis服务,执行

docker run --name disconf-redis -d redis:3.0

2) 启动MySQL服务,在disconf-mysql目录执行

docker run --name disconf-mysql -e MYSQL_ROOT_PASSWORD=passw0rd -v ${PWD}/files/sql:/docker-entrypoint-initdb.d \
    -v ${PWD}/data:/var/lib/mysql -d mysql:5.7

3) 创建一个ZooKeeper服务,在disconf-zoo目录下执行

docker build -t yourimgs/disconf-zoo .
docker run --name disconf-zoo -p 2181:2181 -d yourimgs/disconf-zoo

4) 创建应用服务器镜像,在disconf-app目录下执行

docker build -t yourimgs/disconf-app .
docker run -d --link disconf-mysql:disconf-mysql --link disconf-redis:disconf-redis --link disconf-zoo:disconf-zoo \
    -v /home/ubuntu/disconf-build/working/war:/home/work/dsp/disconf-rd/war --name disconf-app yourimgs/disconf-app

5) 在disconf-nginx目录下执行

docker run --name disconf-nginx -v ${PWD}/nginx.conf:/etc/nginx/nginx.conf:ro \
    -v /home/ubuntu/disconf-build/working/war/html:/home/work/dsp/disconf-rd/war/html:ro \
    -v ${PWD}/logs:/home/work/var/logs/disconf -d -p 8081:8081 --link disconf-app:disconf-app nginx:1.9

所有容器启动正常以后,就可以通过http://yourhost:8081访问Disconf-web服务了。Disconf的客户端需要访问zookeeper,所以在配置Disconf的客户端时请配置hosts文件,将主机名disconf-zoo映射到Docker所在的服务器上。

准备mysql, tomcat, nginx的Dockerfile文件,用于生成定制的镜像 redis,zookeeper 镜像直接从云端获取。 打开终端进入tomcat目录,执行: docker build -t conf_tomcat:0.0.1 . 再进入nginx目录,执行: docker build -t conf_nginx:0.0.1 . 再进入mysql目录,执行: docker build -t conf_mysql:0.0.1 . docker images 就能看到这三个新的镜像 root@ubuntu:/home/anan/docker/docker_disconf-master# docker images REPOSITORY TAG IMAGE ID CREATED SIZE conf_mysql 0.0.1 deed528eba7f 13 hours ago 256 MB conf_nginx 0.0.1 655a8ea20190 16 hours ago 111 MB conf_tomcat 0.0.1 8dbaa04dfd30 16 hours ago 393 MB 到docker-composer.yml的目录下,执行: docker-compose up -d 执行完成之后,就可以通过docker ps 看到启动的容器 root@ubuntu:/home/anan/docker/docker_disconf-master# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES de596887acac conf_nginx:0.0.1 "nginx -g 'daemon ..." About an hour ago Up About an hour 0.0.0.0:80->80/tcp dockerdisconfmaster_disconf_nginx_1 5bbdb21bf496 conf_tomcat:0.0.1 "catalina.sh run" About an hour ago Up About an hour 8080/tcp dockerdisconfmaster_disconf_tomcat_1 e050bb3c4d05 daocloud.io/library/redis "docker-entrypoint..." About an hour ago Up About an hour 6379/tcp dockerdisconfmaster_disconf_redis_1_1 dd676e1ecbee zookeeper:3.3.6 "/docker-entrypoin..." About an hour ago Up About an hour 0.0.0.0:2181->2181/tcp, 0.0.0.0:2888->2888/tcp, 0.0.0.0:3888->3888/tcp dockerdisconfmaster_disconf_zookeeper_1 8efcbedb9a44 daocloud.io/library/redis "docker-entrypoint..." About an hour ago Up About an hour 6379/tcp dockerdisconfmaster_disconf_redis_2_1 eb0d9c248401 conf_mysql:0.0.1 "docker-entrypoint..." About an hour ago Up About an hour 0.0.0.0:3306->3306/tcp dockerdisconfmaster_disconf_mysql_1 现在打开浏览器即可访问disconf 的web端, 用户名和密码都是admin. 停止整个环境的命令: docker-compose stop 删除整个环境的命令: docker-compose rm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值