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,指定分支为上面配的${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了。
可以到控制台输出来看有无错误。