Docker发布版本应该与现有的版本发布尽量一致,参考jenkins的版本发布过程;小编认为maven库和docker库有很多类似的地方,因此打包过程参考maven的打包过程;重点实现docker自动打包、push、pull、run、kill相关流程的控制。
1、部署和目前的jenkins发布流程基本保持一致,目前版本发布的触发条件有:定时发布、手工发布,发布过程包括:下载代码、构建、停止tomcat、清除缓存、当期版本、上传war包、上传且替换配置文件、启动tomcat等步骤。
2、针对使用docker容器的,需要增加构建镜像上传镜像的过程
jekins 和 web服务器需要有docker环境,包括docker和docker-compose
总体流程
1 下载代码打包
1)代码路径下面要包含各套环境的配置文件信息,
2 docker镜像版本定义
docker镜像的当期版本使用${BUILD_NUMBER},上一版本使用$$((${BUILD_NUMBER}-1))
3 准备物料
压缩环境配置文件为evnconfig.zip,拷贝到Dockerfile目录;
拷贝war包到Dockefile目录。
4 Dockerfile构建镜像
Dockerfile如下:
#父镜像
FROM
#维护者
MAINTAINER luo tian “
#同步物料
ADD document.war.tar /root/tomcat7/webapp
ADD envconfig.tar /root/tomcat7/webapp
#暴露访问端口
EXPOSE 8080
#启动服务
ENTRYPOINT sh /root/tomcat7/bin/startup.sh
构建命令如下:docker build -t .
注解:镜像名称是部分组成:仓库url/项目名称/镜像名称:镜像版本
Push镜像
#登陆仓库
docker login yy.com
#上传镜像
docker push
docker仓库查看镜像
5 目标服务器执行shell命令
#停止容器
docker kill document.war
#删除容器
docker rm document.war
#启动新容器
docker run -p 8080:8080 -v /var/run/docker. -v /root/tomcat7/ –name document.war -d
#删除旧镜像
docker rmi
FROM y.com/test/centos7-jdk7-tomcat8:2.0.1
MAINTAINER luo,ten luoten@midea.com
# Install war
RUN mkdir /apps/document.war
RUN mkdir /apps/tomcat8/conf/Catalina
RUN mkdir /apps/tomcat8/conf/Catalina/localhost
RUN mkdir /apps/document.war_work
COPY target/document.war /apps/document.war
ADD document.war.xml /apps/tomcat8/conf/Catalina/localhost
完整docker镜像编译服务器执行的代码
cd /root/jenkins_home/workspace/DEV-DOCUMENT/document.war/target/
unzip document.war-0.0.1-SNAPSHOT.war -d document.war
cd ../
docker build -t y.com/test/document.war:${BUILD_NUMBER} .
docker login -p admin123 -u admin y.com
docker push y.com/test/document.war:${BUILD_NUMBER}
docker rmi y.com/test/document.war:${BUILD_NUMBER}
完整docker应用说在服务器的执行代码
docker kill document.war
docker rm -f document.war
docker rmi y.com/test/document.war:$((${BUILD_NUMBER}-1))
docker run -v /root/document.war/logs:/apps/tomcat8/logs –name document.war -p 8081:8080 -itd –privileged y.com/test/document.war:${BUILD_NUMBER} /usr/sbin/init