Docker搭建disconf环境,三部曲之三:细说搭建过程

Docker下的disconf实战全文链接

《Docker搭建disconf环境,三部曲之一:极速搭建disconf》;

《Docker搭建disconf环境,三部曲之二:本地快速构建disconf镜像》;

《Docker搭建disconf环境,三部曲之三:细说搭建过程》;

《Docker下使用disconf:极速体验》;

《Docker下使用disconf:细说demo开发》;

细说搭建过程

在前两章中,我们利用远程或本地的镜像,快速体验了本地启动disconf的过程,本章我们一起来分析和梳理整个定制和搭建过程,了解这些后,我们就能根据自己的需要来定制本地的disconf环境了。

以下两点请注意

本机环境已经安装了maven,并且把maven的bin目录配置到环境变量PATH下;

编译编译disconf源码时,要用到官方shell脚本,所以本次实践的操作系统建议用linux或mac,如果用windows,有三种方法:一个是把shell改成bat脚本,一个是用虚拟机的linux,还有一种是用在docker上搭建一个maven容器,把disconf源码放在这个容器下编译;

先分析再实战

首先把disconf环境依赖的所有server都列出来:

redis<无需定制,用官方镜像>

zookeeper<无需定制,用官方镜像>

mysql<定制,创建库,表,导入初始化数据>

tomcat<定制,包含业务war包,路径配置>

nginx<定制,配置动静分离,包含静态web资源>

下一步,是理清各个server之间的依赖关系(例如tomcat上的业务要连接mysql数据库),依赖关系如下,搞清楚了这个就知道link参数怎么写了:

这里写图片描述

server的关系已经理清了,接下来就要开始定制mysql,tomcat,nginx这些镜像了,首先是准备材料,disconf是个开源的应用,我们可以在git上下载最新的源码,执行命令:

git clone git@github.com:knightliao/disconf.git

下载完毕,打开文件夹,内容如下图:

这里写图片描述

接下来我们开始实战把,实战一共五个步骤,依次是: 定制mysql镜像 -> 定制tomcat镜像 -> 定制nginx镜像 -> 编写docker-compose脚本 -> docker-compose启动

定制mysql镜像

mysql定制:目的是让容器在创建时自动执行sql脚本,创建库和表,并导入初始化数据,在docker上实现数据库脚本自动执行的方法可以参照《让docker中的mysql启动时自动执行sql》一文,这里简单说一下步骤:

打开disconf源码文件夹,在disconf/disconf-web/sql目录下找到以下四个文件:

0-init_table.sql
1-init_data.sql
201512/20151225.sql
20160701/20160701.sql

新建一个目录mysql,把上面提到的四个sql文件复制到这个目录下,再新建一个名为install_data.sh的脚本,内容如下:

#!/bin/bash mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF source $WORK_PATH/$FILE_0; source $WORK_PATH/$FILE_1; source $WORK_PATH/$FILE_2; source $WORK_PATH/$FILE_3;

内容很简单,就是自动登录mysql,密码是docker启动的时候传入的环境变量,然后执行四个sql脚本文件

在mysql目录下新建Dockerfile文件,内容如下:

# Docker image of disconf mysql # VERSION 0.0.1 # Author: bolingcavalry #基础镜像使用daocloud.io/library/mysql:8 FROM daocloud.io/library/mysql:8 #作者 MAINTAINER BolingCavalry <zq2599@gmail.com> #定义工作目录 ENV WORK_PATH /usr/local/work #定义会被容器自动执行的目录 ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d #定义sql文件名 ENV FILE_0 0-init_table.sql ENV FILE_1 1-init_data.sql ENV FILE_2 20151225.sql ENV FILE_3 20160701.sql #定义shell文件名 ENV INSTALL_DATA_SHELL install_data.sh #创建文件夹 RUN mkdir -p $WORK_PATH #把数据库初始化数据的文件复制到工作目录下 COPY ./$FILE_0 $WORK_PATH/ COPY ./$FILE_1 $WORK_PATH/ COPY ./$FILE_2 $WORK_PATH/ COPY ./$FILE_3 $WORK_PATH/ #把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/ #给执行文件增加可执行权限 RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL

打开终端在mysql目录下执行以下命令,构建msql镜像:

docker build -t conf_mysql:0.0.1 .

msql镜像构建成功

定制tomcat镜像

构建tomcat镜像时最重要的就是war包的生成,步骤如下:

创建两个文件夹,分别设置到ONLINE_CONFIG_PATH和WAR_ROOT_PATH这两个环境变量中,环境变量的设置方式在不同的操作系统下各不相同,我用的是mac,配置方式是在~/.bash_profile文件中加入以下内容(写完记得执行source ~/.bash_profile使环境变量在当前命令行窗口生效):

ONLINE_CONFIG_PATH=http://www.likecs.com/Users/zq2599/temp/201705/03/005/online-resources WAR_ROOT_PATH=http://www.likecs.com/Users/zq2599/temp/201705/03/005/war export ONLINE_CONFIG_PATH export WAR_ROOT_PATH

/Users/zq2599/temp/201705/03/005/online-resources和/Users/zq2599/temp/201705/03/005/war都是刚刚新建的文件夹;

打开disconf的源文件的子目录disconf-web/profile/rd,里面的文件如下图:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjwxy.html