300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像

docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像

时间:2020-02-09 16:14:04

相关推荐

docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像

一、前言

1、本文主要内容

将在项目中实际使用到的相关东西整理记录一波,同时可以方便其他同学在使用到的时候参考一下(自己也备忘),有不对的地方,欢迎指出~~

Docker部署SpringBoot 项目通用Dockerfile文件、脚本Jenkins新建任务图文详解

3、本文环境信息

服务器

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与测试服务器不在一起,如果在一起的话,就可以选择只运行脚本命令的那个构建选项即可。

点击保存,这样一个任务就创建完成了。

觉得有用就顺手转发、点赞、在看三连走一波,非常感谢!

长按/扫码关注我吧,会找到你想要的……

喜欢就点个在看吧

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