您的位置:首页 > 运维架构 > Docker

基于jenkins构建应用的docker镜像做持续集成和部署

2017-04-27 10:11 821 查看
为了做持续的集成和部署,引入了jenkins,利用jenkins来构建应用的docker镜像并push到私有仓库,然后再基于应用的docker镜像来发布项目,这样减少了很多的手动操作,基本能实现持续集成和持续部署。项目基本骨架



该项目是gradle的项目,代码类似于https://github.com/JThink/SkyEye/tree/master/skyeye-alarm,这里除了源码和gradle等文件,加了一个image文件夹,主要是用来做构建镜像的Dockerfile和其他相关需要的文件(CMD是备份,构建的时候没有实际的作用)run.sh
镜像的启动脚本

#!/bin/bash
cd /home/deploy/bane-0.2.0source /etc/profile.d/java.shnohup bin/bane &tail -f /opt/xxx/xxx-config/monitor-center/bane/bane.propertiesbane.properties
具体的配置文件,由于dev、qa、prod环境所需的配置值不同,所以这边需要单独提供某个环境的配置文件。项目如果使用的是配置中心,那么这个文件就不需要了
Dockerfile
具体的构建镜像文件
同:http://blog.csdn.net/jthink_/article/details/70260105

# build the base image: jdk# this is the docker file, use the ubuntu 14.04-jdk7# VERSION 1# Author: jthink
# the basic imageFROM 192.168.xx.xx:5000/ubuntu:14.04-jdk7# maintainerMAINTAINER jthink xxx@xxx.com# copy the fileRUN mkdir -p /home/deployRUN mkdir -p /opt/xxx/xxx-config/monitor-center/baneADD ./bane-0.1.0.tar /home/deployADD ./bane.properties /opt/xxx/xxx-config/monitor-center/baneCOPY run.sh /run.shRUN chmod +x /run.sh# CMD to startCMD ["/run.sh"]jenkins构建
基于jenkins进行镜像的构建基本信息



源码



构建



这里解释下
首先进行项目的打包,gradle clean distTar -x test(以前的项目都是gradle clean distZip -x test,由于在镜像的ADD命令中只能解压.tar的文件,所以这里改了打包方式,之间的差别就是.tar的文件稍微大一点)
然后进行项目的镜像构建,首先将tar包复制到image文件夹下,然后读取到version和project name信息,然后登录到私有仓库,执行build命令进行构建,最后push到私有仓库
部署
ssh到docker leader那台机器,执行docker service create命令即可
当多个项目组成了一个应用,需要同时部署,那么我们可以每个项目都构建出镜像,然后再创建一个jenkins用来部署,使用compose文件来部署
具体用docker swarm还是k8s部署以后再介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息