Skip to content

jenkins+docker实现自动编译、打包、构建镜像、容器部署

一、整个持续集成、自动部署流程

开发push代码到gitlab,触发jenkins自动pull代码,通过maven编译、打包,然后通过执行shell脚本使docker构建镜像并push到私服(或者阿里云)仓库,此操作完成后jenkins服务器上再执行SSH命令登录到部署服务器,docker从仓库(私服)拉取镜像,启动容器。整个操作流程完成。

二、服务器软件环境配置

 由于条件所限,故只用两台机器作为搭建环境。

三、jenkins配置

 3.1 安装插件

SSH:用于SSH远程Docker主机执行Shell命令

3.2 添加SSH远程主机

添加访问的凭据:

系统管理-系统配置


 

3.3 开启Docker Remote API

在192.168.1.121上执行:

vim  /lib/systemd/system/docker.service 

重新加载配置文件

systemctl daemon-reload 
systemctl restart docker

开启防火墙的端口

firewall-cmd --zone=public --add-port=2375/tcp --permanent 
firewall-cmd --reload
firewall-cmd --zone=public --query-port=2375/tcp

3.4 docker 配置

系统管理-系统设置-云  新增

四、部署私有镜像仓库 

Docker Hub作为Docker默认官方公共镜像;如果想自己搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单。
在192.168.1.121部署:

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry

接下来测试registry可用性。

为了更快的获取镜像,这里使用了阿里云的镜像加速器。
由于Docker CLI客户端默认以HTTPS访问,而部署的registry并未提供HTTPS,因此,需要在pull镜像的Docker主机(192.168.1.237,192.168.1.121)添加HTTP可信任: 

vi /etc/docker/daemon.json 

五、构建Tomcat基础镜像

vim Dockerfile

添加如下内容: 

FROM centos:7
MAINTAINER www.aliangedu.com

ENV VERSION=8.5.39
ENV JAVA_HOME /usr/local/jdk

RUN yum install wget -y

RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \
    tar zxf apache-tomcat-${VERSION}.tar.gz && \
    mv apache-tomcat-${VERSION} /usr/local/tomcat && \
    rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* 

EXPOSE 8080
CMD ["catalina.sh", "run"]

 构建镜像并push到192.168.1.121仓库:

docker build -t 192.168.1.121:5000/hxkg-tomcat-8.5 .
docker push  192.168.1.121:5000/hxkg-tomcat-8.5 

六、新建任务

任务配置

在Jenkins本机服务器(192.168.1.237)构建镜像并推送到镜像仓库(192.168.1.121),并SSH远程连接到Docker主机(192.168.1.121,这里可以新增一台单独的服务器来拉取仓库中的镜像)

使用推送的镜像创建容器:

获取仓库中构建的tomcat镜像,基于此镜像将编译打包后的war包拷贝到tomcat webapps目录,构建镜像并推送192.168.1.121仓库。

上图中,在Jenkins主机执行的Shell命令如下: 

REPOSITORY=192.168.1.121:5000/zpzc
# 构建镜像
cat > Dockerfile << EOF
FROM 192.168.1.121:5000/hxkg-tomcat-8.5:latest
RUN rm -rf /usr/local/tomcat/webapps/*.war
COPY target/*.war /usr/local/tomcat/webapps
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
EOF
docker build -t $REPOSITORY .
# 上传镜像
docker push $REPOSITORY

镜像构建完成后, 使用ssh远程登录部署服务器(192.168.1.121)上删除已经存在的容器和拉取的部署镜像,重新部署新的容器。

上图中,SSH远程Docker主机执行的Shell命令如下:

REPOSITORY=192.168.1.121:5000/zpzc
# 部署
docker rm -f zpzc
docker rmi $REPOSITORY
docker run -d --name zpzc  -p 28888:8080 -v /usr/java/jdk1.8.0_171:/usr/local/jdk $REPOSITORY

 注意,此处需要在部署服务器上安装jdk环境,挂载jdk目录到容器中,因为tomcat镜像文件Dockerfile没有配置jdk环境:

七、构建任务

 执行日志:

八、测试

在192.168.1.121上查看镜像:

查看容器:

 postman接口测试:

九、遇到的异常

1.

解决:在192.168.1.237上执行 sudo gpasswd -a jenkins root;sudo service jenkins restart。将jenkins用户加入到root用户组中获取管理员权限。详见:https://www.cnblogs.com/informatics/p/8276172.html。

2.

解决: 这个问题可能是由于客户端采用https,docker registry未采用https服务所致。一种处理方式是把客户对地址“192.168.1.121:5000”请求改为http。在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:{ "insecure-registries":["192.168.1.121:5000"] }   详见: https://www.cnblogs.com/hobinly/p/6110624.html

3.

解决:这是因为我在jenkins配置shell脚本的时候没有写全路径导致找不到tomcat catalina.sh脚本。

改为:

 


深圳SEO优化公司天津百度竞价包年推广哪家好江门网站优化按天收费报价扬州网站建设设计哪家好石家庄百度竞价包年推广昌都英文网站建设多少钱广安网站seo优化推荐丽水关键词排名包年推广公司聊城网站优化软件报价和县百度竞价包年推广哪家好鞍山网站优化按天收费公司雅安网站制作设计推荐张家界关键词按天计费哪家好太原百搜标王多少钱湘潭模板网站建设多少钱珠海SEO按天扣费报价平顶山网站优化推广推荐临沧设计网站报价厦门百度seo哪家好雅安关键词按天计费哪家好大同外贸网站设计推荐萍乡网站推广方案多少钱龙华seo排名价格新余营销型网站建设南阳关键词排名包年推广推荐长葛设计公司网站价格张北模板制作临汾优化报价广州关键词排名包年推广报价怀化seo优化公司梅州SEO按天计费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化