一、前言
1、本文主要内容
将在项目中实际使用到的相关东西整理记录一波,同时可以方便其他同学在使用到的时候参考一下(自己也备忘),有不对的地方,欢迎指出~~
- Docker部署SpringBoot 项目通用Dockerfile文件、脚本
- Jenkins新建任务图文详解
3、本文环境信息
服务器
操作系统 硬件配置 IP 说明 CentOS 7 4C16G 10.133.28.54 部署Jenkins Jenkins版本
Jenkins安装包有两种,一种是LTS,一种是Weekly。LTS是稳定版,Weekly每周会更新一次,一般使用LTS就行了,最新版的LTS:2.235.2
Docker
Docker Engine - Community : 19.03.8
Spring Boot应用
使用的是版本2.2.5.RELEASE,当然只要是一个Spring Boot应用都可以
GitLab
本文演示使用的是社区版12.7.6 也可以使用GitHub 、Gitee或者SVN都可以
二、准备工作
1、Docker 环境安装
在Linux服务器上安装Docker环境,具体可以参考:Docker | 在CentOS上安装Docker Engine
2、Jenkins 环境安装
在Linux服务器上安装Jenkins,具体可以参考:CentOS下使用Docker安装Jenkins及配置详细教程
3、GitLab 环境安装
在Linux服务器上安装GitLab,具体可以参考:GitLab持续集成发布之一:CentOS7下GitLab安装部署教程
三、打包及部署
❝一般微服务项目都会有很多个服务,本文以cloud-gateway 微服务的网关module为例来演示
❞
1、打镜像Dockerfile及运行脚本
目前微服务盛行,既然是微服务,大部分都会采用Docker容器部署,这样可以非常快捷的扩容,所以本文也会从打镜像,镜像启动,镜像推送等方面详细的介绍下。
通用版Dockerfile
FROM java:8# 以下4行配置可以去掉,在此展示下,只因项目中与SAP采用Jco3直连的方式,相对应的项目部署环境也需要配置JCO3的环境,ADD libsapjco3.so /home/sap/libsapjco3.soADD sapjco3.jar /home/sap/sapjco3.jarENV LD_LIBRARY_PATH /home/sapENV CLASSPATH $CLASSPATH:$LD_LIBRARY_PATH/sapjco3.jarADD cloud-gateway-1.1.0-SNAPSHOT.jar /app.jarEXPOSE 8001ENTRYPOINT ["java", "-jar","/app.jar"]
❝生产环境,可以根据需求在
❞ENTRYPOINT
命令行中增加JVM
相对应参数的设置
执行脚本
测试环境一般情况下,都是在一台服务器,启动多个Docker容器,此处将
spring.profile.active
参数提取出来了,可以做到真正的一包多环境使用,可以参考以下脚本:
#!/usr/bin/env bashgroup_name='mva-cloud'app_name='cloud-gateway'app_version='1.1.0-SNAPSHOT'profile_active='test'echo '----copy jar----'# 停止容器docker stop ${app_name}echo '----stop container----'# 删除容器docker rm ${app_name}echo '----rm container----'# 删除镜像docker rmi ${group_name}/${app_name}:${app_version}echo '----rm image----'# 构建新版镜像docker build -t ${group_name}/${app_name}:${app_version} .echo '----build image----'# 启动Docker镜像docker run -p 9527:9527 --name ${app_name} \-e 'spring.profiles.active'='prod' \-e TZ="Asia/Shanghai" \-v /etc/localtime:/etc/localtime \-v /home/zkgc/mydata/cloud/${app_name}/logs:/home/zkgc/logs/${app_name} \-d ${group_name}/${app_name}:${app_version}echo '----start container----'
❝生产环境,一般情况下都需要将打好的镜像推送到docker私有仓库中,所以说每一版都需要有版本号的变化,可以考虑使用时间戳动态版本号,docker私有仓库相关介绍可以参考:Docker | 在CentOS上搭建Docker私有仓库Registry-v2
❞
将
Dockerfile
、运行脚本run.sh
放到服务器的/home/cloud/test-deploy/cloud-gateway
目录,后续通过Jenkins打包的Jar 文件也需要拷贝到该目录,如果需要配置SAP的环境,那对应的jar、so文件都需要拷贝到这一个目录,这样在打镜像的时候,就会把相对应的环境打到镜像里面。
2、Jenkins创建任务
新建一个自由风格的任务
配置源码管理
我这边使用的是GitLab,当然你们使用Github、Gitee都是可以的。
增加一个访问GitLab的用户名密码
配置构建
在构建这个模块下呢,我们主要配置使用Mavenn来进行打包、配置通过SSH执行命令并传输文件等
想发版的时候,点一下立即构建,Jenkins就会自动从代码仓库拉取最新代码,进行打包,打镜像,启动镜像一键完成了。
另外,前台代码也是可以通过Jenkins来进行一键打包部署的,与后台的稍微有些不同,后续我会单独写一篇文章,来演示下如何进行前台代码的一键打包部署,前台代码使用的是VUE进行演示。
先打包使用到的通用module。点击
增加构建步骤
-->调用顶层Maven目标
❝
说明下:我这个演示项目已经把一些通用的东西抽取出来了,而gateway 是依赖这些通用的module,所以我这会先将这些通用的进行打包,防止在打包gateway的时候,找不到对应的jar包
❞配置打包
cloud-gateway
,点击增加构建步骤
-->调用顶层Maven目标
,具体配置项参考下图:配置执行上面准备好的脚本。点击
增加构建步骤
-->Send files or execute commands over SSH
选项,这个是将打完包的jar包拷贝到指定服务器的指定目录,完成后执行相对应的脚本,具体如下图:❝
这个地方,需要提前配置好服务器的凭证信息(在公众号的其他文章有教程,可以翻一下),服务器需要开启ssh访问,我这里是Jenkins与测试服务器不在一起,如果在一起的话,就可以选择只运行脚本命令的那个构建选项即可。
❞点击保存,这样一个任务就创建完成了。
觉得有用就顺手转发、点赞、在看三连走一波,非常感谢!
长按/扫码关注我吧,会找到你想要的……
喜欢就点个在看吧