Docker中搭建Jenkins集成Maven自动打包部署Springboot项目

部署环境

腾讯云服务器Ubuntu

1. Docker安装

这步略过,点进这篇文章的同学估计都是卡在后面几步。
实在不会就按照官网安装即可Docker官网

2. 在Docker中运行Jenkins

拉取Jenkins镜像并运行,笔者选择的是Jenkins中文社区制作的国内稳定版

docker run -d -u root -v /var/jenkins/data:/var/jenkins_home -p 8090:8080 --name myjenkins jenkinszh/jenkins-zh:lts

语句中设置了运行宿主机端口为8090;挂载宿主机/var/jenkins/data目录至容器中的/var/jenkins_home目录,来持久保存Jenkis的配置。
记得存下控制台中的密码,在初次进入界面时要用。找不到的话在\Jenkins\secrets目录,打开initialAdminPassword文件中也有。

3. 在Jenkins容器中配置Maven

也可以选择在宿主机中安装配置Maven,笔者这里是在Jenkins容器中进行配置

i. 进入Jenkins容器

docker exec -it myjenkins bash
mkdir /usr/local/maven
chmod 777 /usr/local/maven
cd /usr/local/maven
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz
tar zxvf apache-maven-3.8.1-bin.tar.gz

ii. 配置Maven

配置settings.xml中本地仓和国内镜像仓即可

iii. 打包镜像(可选)

此时可以把安装配置了Maven的Jenkins容器制作一个新镜像

-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

docker commit -m  ""   -a  ""   [CONTAINER ID]  [给新的镜像命名]

4. 配置Jenkins

浏览器访问http://IP:8090/进入Jenkins界面,初始密码上文有写。
i. 各种点完,进入系统后,在系统管理–插件管理中安装需要的插件。
Git,Maven,SSH
ii. 系统管理–全局工具配置中配置Maven,Git,SSH如图
无
在这里插入图片描述
在这里插入图片描述
系统管理–系统配置中配置SSH,笔者这里就是本机
在这里插入图片描述

5. 编辑Jenkins脚本

这里说一下总体脚本思路
首先拉Git代码,使用Maven打包,Jar包此时在Jenkins工作空间,将Jar包移动到卷上(宿主机)(如果Jenkins和Docker不在同机器上,可以用SSH将Jar包推到Docker机上,思路是一样的),然后通过SSH登录宿主机,使用Docker命令部署Jar包。

i. 新建任务

在这里插入图片描述
配置Git参数,用于部署时可选分支,可以按照自己的需求配置为标签或其他
配置Git参数
配置Git,指定分支为上面配的${Branch}
在这里插入图片描述
配置Maven命令,进行打包

-DskipTests=true clean install


配置Shell命令,将jar包移动至与宿主机绑定的卷上,因为Jenkins执行的命令是在容器内部,将jar移到宿主机环境以便于在宿主机执行部署。
在这里插入图片描述
通过SSH登录到宿主机,将jar包打包为镜像并以容器部署
在这里插入图片描述

cd ~
docker stop [容器名]
docker rm -f [容器名]       
docker rmi -f [镜像名]:[版本号]
docker build -t [镜像名]:[版本号]   [Dockerfile路径]   
// 例如docker build -t ziming/app:1.0  startup (Dockerfile放在startup目录下)
docker run -d -p [外部端口]: [内部端口,即yml里配的端口] --name [容器名]   [镜像名]:[版本号]

这里可能稍微复杂一点,不是最好的方案,其他方案后续专题文章再说
Dockerfile如下

FROM java:8
VOLUME /tmp
COPY *.jar app.jar
EXPOSE 8013
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT ["java","-jar","/app.jar"]

如果Jar包不在Dockerfile同目录,就把COPY *.jar app.jar这句改一下
至此,脚本就完成了,点击保存
构建选择分支,点击开始构建,就OK了。
可以到控制台输出来看有无错误。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值