[ 企业实战!] Jenkins+Pipeline+Docker 自动化发布Java项目
2020-09-13 11:52
1641 查看
写在前面:
在前面的博客中写过流水线发布Java后端项目,但还没有涉及到容器操作,这一篇就是写关于流水线发布docker 镜像部署过程
部署环境
主机名 | IP地址 | 部署软件 | 内存 |
---|---|---|---|
harbor | 192.168.154.129 | docker、docker-compose、harbor | 2G |
gitlab | 192.168.154.131 | gitlab 、git、gitlab、mysql | 3G |
jenkins | 192.168.154.128 | jdk、git、jenkins、docker、maven | 2G |
harbor服务器上部署:
一、搭建harbor仓库
1.安装harbor仓库,上传tomcat镜像
二、搭建数据库MySQL
1.安装mysql5.7
2.登录数据库,授权
mysql -uroot -pMypass@123#!
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Mypass@123#!' with grant option; #设置权限 mysql> flush privileges;
2.导入数据
create database quartz
source /etc/quartz.sql
3.查看表
use quartz;
show tables;
注意:
若出现不识别表名或库名,可能是大小写的问题
解决方案:
vim /etc/my.cnf
#忽略大小写 lower_case_table_names=1
重启数据库
systemctl restart mysqld
gitlab服务器上部署
搭建gitlab仓库
1.安装gitlab仓库
2.上传java代码到gitlab仓库
Jenkins服务器上部署
一、搭建Jenkins服务器
1.安装Jenkins服务
2.安装maven插件及配置
3.安装docker
1.添加docker-ce源
cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.安装docker
yum -y install docker-ce
3.启动docker
systemctl start docker
二、编写流水线脚本
1.编写Jenkinsfile
pipeline { agent { node { label 'master' } } // 拉取代码 stages { stage('GetCode') { steps { sleep 5 } } // 代码打包 stage('Maven Build') { steps { sh ''' export JAVA_HOME=/usr/local/java /usr/local/apache-maven-3.6.3/bin/mvn clean install -Ptest ''' } } // 推送到镜像仓库 stage('Push Image') { steps { sh ''' REPOSITORY=192.168.154.129/maven-test01/maven-quartz:${branch} //创建镜像 docker build -t $REPOSITORY . //登录,上传镜像到仓库 docker login 192.168.154.129 -u admin -p Harbor12345 docker push $REPOSITORY ''' } } // 部署到Docker主机 stage('Deploy to Docker') { steps { sh ''' //推送shell脚本到docker主机 scp images.sh root@harbor:/root/ //远程执行脚本 ssh -p 22 root@harbor "chmod +x images.sh && sh /root/images.sh" ''' } } } }
2.编写Dockerfile
#从harbor拉取镜像 FROM 192.168.154.129/maven-test01/tomcat:v1 #镜像构建人信息(可选) MAINTAINER zhao #删除webapps目录下文件 RUN rm -rf /usr/local/tomcat/webapps/* #复制打的最新war包到webapps目录 ADD target/quartz.war /usr/local/tomcat/webapps/
3.编写镜像shell脚本
#!/bin/bash Img=`docker images |grep master |awk -F ' ' '{ print $3}'` Con=`docker ps |grep :88 |awk -F ' ' '{ print $1}'` #删除旧的镜像 docker stop $Con docker rmi -f $Img #下载新镜像,运行 docker pull 192.168.154.129/maven-test01/maven-quartz:master sleep 2 #后台运行容器 docker run -d -p 88:8080 192.168.154.129/maven-test01/maven-quartz:master
三、新建项目pipline-docker
四、构建测试
五、查看新镜像
温馨提示:
同一标签的镜像上传后,会自动覆盖之前镜像,不用特地删除旧的镜像!
六、查看容器运行
docker ps
七、java项目测试
总结
1.这里其实就是修改了3个脚本文件,前提是在其他环境都部署好的条件下。
2.为了避免文章篇幅过长,好多步骤,只给了博客链接地址,仅供参考,如果公司已经有环境,可以不用理会。
相关文章推荐
- Docker、Jenkins企业项目实战附文档(完整)
- docker与jenkins的自动化CI/CD流水线实战(java-svn)
- Jenkins Pipeline+Docker实现流水线自动化构建(上百个项目共用一个脚本方案)
- Jenkins Pipeline+Docker实现流水线自动化构建(上百个项目共用一个脚本方案)
- docker jenkins gitlab 自动化部署(java python项目)
- 云计算Docker全面项目实战(Maven+Jenkins、日志管理ELK、WordPress博客镜像)
- 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第七节)
- 基于Jenkins+Docker的自动化代码发布流程
- 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第二节)
- jenkins实战之发布一个php小的项目
- 2019年某JAVA编程实战教程 办公自动化OA项目实例
- .net core 项目+jenkins+git+docker实现自动化部署
- 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第六节)
- JavaWeb 入门级项目实战 - 文章发布系统 (第一节)
- Jenkins 学习笔记(三):我们的JAVA 项目是这么发布的
- Jenkins与Docker的自动化CI/CD实战
- 使用Jenkins Pipeline自动化构建发布Java项目的方法
- JAVA编程实战视频教程 办公自动化OA项目实例教程
- 【精编重制版】JavaWeb 入门级项目实战 -- 文章发布系统 (第一节)
- 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第十节)