300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > jenkins+maven+docker java项目编译 打包 构建镜像 上传私有仓库 web容器部署

jenkins+maven+docker java项目编译 打包 构建镜像 上传私有仓库 web容器部署

时间:2023-04-08 23:52:17

相关推荐

jenkins+maven+docker java项目编译 打包 构建镜像 上传私有仓库 web容器部署

本环境非常简单,主要实现如下流程功能

员工通过eclipse提交java代码———gitlab更新代码————jenkins通过maven编译打包————生成war包————制作docker镜像并上传到私有仓库————web服务器下载镜像————运行容器对外服务

部分说明:

jenkins服务器上已经安装了maven,并已配置。jenkins服务器上安装docker服务。(打包镜像,并上传至私有仓库)提前构建本地gitlab服务器,并上传项目代码,配置用户认证。需要提前创建本地的私有仓库,走公网仓库会非常慢。若jenkins任务不多,可以在jenkins本机上进行docker镜像的制作打包并上传,配置比较简单。若jenkins任务很多,建议单独配置一台docker镜像打包服务器。web服务器需要提前配置进jenkins里。

1.jenkins里MAVEN的配置(JDK及MAVEN路径配置,具体可以看我之前的文章)

2.jenkins里新增web服务器(SSH Servers)

3.docker私有仓库的配置(具体可以看我前面的文章)

4.在jenkins中新增maven任务

1)新建任务

2)指定git项目地址以及认证用户,指定分支

3)构建环境配置,maven的选项根据自己情况来填

4)增加post-step,本案例比较简单,通过shell脚本实现

建议在本地服务器上新建一个目录(/app/dockerfile),脚本里把war拷贝过去,并在目录下建DOCKERFILE文件,进行docker build。不要直接在jenkins的workspace里进行docker build,每次重新构建会被清空。当然也可以把dockerfile放在gitlab,build的时候用链接来调用。

shell脚本具体说明如下

cd /app/dockerfile #重新选择jenkins服务器上的某一个目录,DOCKERFILE放到此目录下echo `目录已变更`rm -rf bbs-5.7.war #删除原有的war包cp /var/lib/jenkins/workspace/maven_t3_docker_image_from_registry/target/bbs-5.7.war ./ #将jenkins workspace下生成的新war包,拷贝到/app/dockerfile下echo "war包拷贝完成" docker rmi 192.168.1.145:5000/cuanon-tomcat:VW # 删除现有的docker镜像echo "删除现有镜像"docker build -t 192.168.1.145:5000/cuanon-tomcat:VW . #docker build生成新的镜像echo "编译完成"docker push 192.168.1.145:5000/cuanon-tomcat:VW #上传到本地私有仓库echo "推送私有仓库完成"

DOCKERFILE也比较简单,利用现成的tomcat镜像,只是把war包拷贝进来。

[root@jenkins01 dockerfile]# pwd/app/dockerfile[root@jenkins01 dockerfile]# cat Dockerfile FROM 192.168.1.145:5000/cuanon-tomcat:V1.1 #现有的tomcat 镜像copy bbs-5.7.war /usr/local/tomcat/webapps #将当前目录下war包拷贝到镜像内[root@jenkins01 dockerfile]# docker imagesREPOSITORYTAG IMAGE ID CREATED SIZE192.168.1.145:5000/cuanon-tomcat VW cd5aa4030708 38 hours ago 314MB192.168.1.145:5000/cuanon-tomcat <none> b6b095f3fa24 38 hours ago 314MB192.168.1.145:5000/cuanon-tomcat <none> 818682237ede 38 hours ago 314MB192.168.1.145:5000/cuanon-tomcat <none> d9725673ec38 38 hours ago 314MB192.168.1.145:5000/cuanon-tomcat V1.1c4d75b3cb23c 2 weeks ago 223MBregistry latest 2e67d166 4 weeks ago 24.2MB

5.增加“构建后操作”

指定对应的web服务器,在脚本执行中增加如下脚本,删除容器及镜像,拉取最新的镜像并运行。

shell脚本说明如下

docker rm -f cuanon-bbs-vw && #删除服务器上正在运行的web容器echo "删除容器完成"docker rmi 192.168.1.145:5000/cuanon-tomcat:VW && #删除原先的镜像,也可以不删除,拉取的时候会自动覆盖。echo "删除image完成"docker pull 192.168.1.145:5000/cuanon-tomcat:VW && #从私有仓库拉取最新的镜像echo "下载image完成"docker run -d -p 1111:8080 --name cuanon-bbs-vw 192.168.1.145:5000/cuanon-tomcat:VW #启动新的容器echo "启动容器完成"

6.构建任务

运行成功会有如下输出

Waiting for Jenkins to finish collecting data[JENKINS] Archiving /var/lib/jenkins/workspace/maven_t3_docker_image_from_registry/pom.xml to bbs/bbs/5.7/bbs-5.7.pom[JENKINS] Archiving /var/lib/jenkins/workspace/maven_t3_docker_image_from_registry/target/bbs-5.7.war to bbs/bbs/5.7/bbs-5.7.war[maven_t3_docker_image_from_registry] $ /bin/sh -xe /tmp/jenkins8778853077367120664.sh+ cd /app/dockerfile++ 目录已变更/tmp/jenkins8778853077367120664.sh: line 3: 目录已变更: command not foundchannel stopped+ echo+ rm -rf bbs-5.7.war+ cp /var/lib/jenkins/workspace/maven_t3_docker_image_from_registry/target/bbs-5.7.war ./+ echo war包拷贝完成war包拷贝完成+ docker rmi 192.168.1.145:5000/cuanon-tomcat:VWUntagged: 192.168.1.145:5000/cuanon-tomcat:VWUntagged: 192.168.1.145:5000/cuanon-tomcat@sha256:af67f949994f4d0f573401ae51e4c3ceb06ee94faa46de0b92f78e5c597f6d8bDeleted: sha256:cd5aa4030708d377615a9df8237573fd3ab73ee2172af35f7f737b833eb58fc7Deleted: sha256:e8e141c364c979db3071ef82961051ec2a02a015d9610b88b7430843c0e29899+ echo 删除现有镜像删除现有镜像+ docker build -t 192.168.1.145:5000/cuanon-tomcat:VW .Sending build context to Docker daemon 90.39MBStep 1/2 : FROM 192.168.1.145:5000/cuanon-tomcat:V1.1---> c4d75b3cb23cStep 2/2 : copy bbs-5.7.war /usr/local/tomcat/webapps---> 594e976939f6Successfully built 594e976939f6Successfully tagged 192.168.1.145:5000/cuanon-tomcat:VW+ echo 编译完成编译完成+ docker push 192.168.1.145:5000/cuanon-tomcat:VWThe push refers to repository [192.168.1.145:5000/cuanon-tomcat]e0eede822835: Preparingdff3d8fca213: Preparingadfe581a0f2f: Preparing2d83a4506e1a: Preparingf8019f2af4d9: Preparingd5a59477c4bd: Preparing0d17b0f92d87: Preparingb4cbb328f729: Preparing366ad773e9a4: Preparing963ed4f795e4: Preparing55004fc58b84: Preparing09634cbb6441: Preparing8b15606a9e3e: Preparingb4cbb328f729: Waiting366ad773e9a4: Waiting963ed4f795e4: Waiting55004fc58b84: Waiting09634cbb6441: Waiting8b15606a9e3e: Waitingd5a59477c4bd: Waiting0d17b0f92d87: Waitingf8019f2af4d9: Layer already existsadfe581a0f2f: Layer already existsdff3d8fca213: Layer already exists2d83a4506e1a: Layer already exists0d17b0f92d87: Layer already existsd5a59477c4bd: Layer already exists366ad773e9a4: Layer already exists963ed4f795e4: Layer already existsb4cbb328f729: Layer already exists09634cbb6441: Layer already exists55004fc58b84: Layer already exists8b15606a9e3e: Layer already existse0eede822835: PushedVW: digest: sha256:457271f6fb730a99e4dd2de846fef26dacbd0cd96dc23d1fea0d3b32eee86107 size: 3038+ echo 推送私有仓库完成推送私有仓库完成SSH: Connecting from host [jenkins01]SSH: Connecting with configuration [dockerserver01] ...SSH: EXEC: completed after 13,210 msSSH: Disconnecting configuration [dockerserver01] ...SSH: Transferred 0 file(s)Finished: SUCCESS

7.查看服务器端的docker运行情况

会看到新的容器产生,验证下网页访问即可。

[root@dockerserver01 target]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES5480f2a1ae88 192.168.1.145:5000/cuanon-tomcat:VW "catalina.sh run" 2 minutes ago Up 2 minutes 0.0.0.0:1111->8080/tcp, :::1111->8080/tcp cuanon-bbs-vwbfd3e5ae3de8 cuanon-bbs:v1"catalina.sh run" 40 hours ago Up 40 hours 0.0.0.0:7777->8080/tcp, :::7777->8080/tcp cuanon-bbs-webba8d943788cc bingozhou/mysql5.7"docker-entrypoint.s…" 2 weeks agoUp 5 days0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mysql-docker5.775b764fe892f tomcat:8.0.53-jre8-slim"catalina.sh run" 2 weeks agoUp 5 days0.0.0.0:9999->8080/tcp, :::9999->8080/tcp tomcat-java8-bbs

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。