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

一、前言

1、本文主要内容

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

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

3、本文环境信息

  • 服务器

    操作系统硬件配置IP说明
    CentOS 74C16G10.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创建任务

  • 新建一个自由风格的任务

    94197ae27eb1adceb57e2805b899d046.png
  • 配置源码管理

    我这边使用的是GitLab,当然你们使用Github、Gitee都是可以的。

    faf7fda5f5c480b90ace823aa298894f.png

    增加一个访问GitLab的用户名密码

    ffd68541ca39caf6a29ed134e50cb60c.png
  • 配置构建

    在构建这个模块下呢,我们主要配置使用Mavenn来进行打包、配置通过SSH执行命令并传输文件等

    想发版的时候,点一下立即构建,Jenkins就会自动从代码仓库拉取最新代码,进行打包,打镜像,启动镜像一键完成了。

    另外,前台代码也是可以通过Jenkins来进行一键打包部署的,与后台的稍微有些不同,后续我会单独写一篇文章,来演示下如何进行前台代码的一键打包部署,前台代码使用的是VUE进行演示。

    • 先打包使用到的通用module。点击增加构建步骤-->调用顶层Maven目标

      27b716faadffb3ba98538de521b361ce.png

      说明下:我这个演示项目已经把一些通用的东西抽取出来了,而gateway 是依赖这些通用的module,所以我这会先将这些通用的进行打包,防止在打包gateway的时候,找不到对应的jar包

    • 配置打包cloud-gateway,点击增加构建步骤-->调用顶层Maven目标,具体配置项参考下图:

      90918b63d78b61f7d36133ed3d667cd7.png
    • 配置执行上面准备好的脚本。点击增加构建步骤-->Send files or execute commands over SSH选项,这个是将打完包的jar包拷贝到指定服务器的指定目录,完成后执行相对应的脚本,具体如下图:

      c71ac4eba026ef4253e25afefeeca0cb.png

      这个地方,需要提前配置好服务器的凭证信息(在公众号的其他文章有教程,可以翻一下),服务器需要开启ssh访问,我这里是Jenkins与测试服务器不在一起,如果在一起的话,就可以选择只运行脚本命令的那个构建选项即可。

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

      773d5fdbe3122e1c4d9873c9629a01ae.png

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

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

      8af707c061eca556f6e07f42ea93f5b3.png

         喜欢就点个在看吧da8e77604fa1d9d1b701ff4f5c89a247.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法

在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应。譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试。这里介绍一种简单的向android模拟器打电话发短…

android 隐藏键盘时ui延迟恢复,android 软键盘的显示与隐藏问题的研究

在android中,常常会和输入法的软件键盘交互。在Manifest文件中,系统给activity的一个属性-windowSoftInputMode来控制输入法的显示方式。该属性提供了Activity的window与软键盘的window交互的方式。这里的属性设置有双方面的影响:1.软键盘的显…

天才基本法_《天才基本法》强推!年度神仙小说,看完这本书我竟然爱上了数学...

《天才基本法》——长洱小说文案元宝的书评这个真的是本年度的神仙小说,讲述了女主回到少女时代,可以和他一直暗恋的数学天才重来一遍。女主让男主改变了觉得她碌碌无为的看法,也改变了自己的人生。本书最大的主角其实是数学!天知…

千年鸿蒙 盼尔来兮是什么意思,鸿蒙是什么意思_鸿蒙的意思和出处_我爱历史网...

鸿蒙,是一个汉语词语,亦作“鸿濛”。中国神话传说的远古时代,传说在盘古开天辟地之前,世界是一团混沌状,因此把那个时代称作鸿蒙时代,后来该词也常被用来泛指远古时代。引证解释亦作“鸿濛”。1、宇宙形成前…

在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

from:http://m.blog.csdn.net/article/details?id51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解决方案的编程环境是C#模式,这样就可以有很多智能的提示或快捷的编程方式在整个解决方案中都可以使用…

(转)CocosCreator零基础制作游戏《极限跳跃》二、制作游戏开始场景

CocosCreator零基础制作游戏《极限跳跃》二、制作游戏开始场景 我们刚刚分析了《极限跳跃》这款游戏,下面我们开始制作第一个游戏场景,也就是游戏的开始场景。 首先,打开CocosCreator,新建HelloWorld项目。选择项目路径&#xff0…

连接池超时配置_HttpClient连接池的一些思考

前言使用apache的httpclient进行http的交互处理已经很长时间了,而httpclient实例则使用了http连接池,想必大家也没有关心过连接池的管理。事实上,通过分析httpclient源码,发现它很优雅地隐藏了所有的连接池管理细节,开…

视图和模型变换

视图变换,是指变换照相机的位置,角度。 模型变换,是指变换被照物体的位置,角度。 这两个变换,都会影响最终图形中,物体的位置,角度。而这两个变换,可以达到相同的效果。比如&#x…

鸿蒙os全面升级,华为突然宣布,鸿蒙OS正式版6月底全面升级,幸福来得太突然...

原标题:华为突然宣布,鸿蒙OS正式版6月底全面升级,幸福来得太突然摘要:早在今年2月华为Mate X2折叠屏新品发布会上,余承东曾表示,鸿蒙OS正式版将于今年4月份全面上线。或许是因为华为宣布卖车分散了很多的精…

eclipse启动失败:An internal error occurred during: reload maven project

2019独角兽企业重金招聘Python工程师标准>>> 1.找到workspace文件夹下的/.metadata文件夹,将其删除掉,然后在讲项目重新导入进去eclipse中。但是这个有一点不好的地方,之前对eclipse所做的配置也会恢复为默认配置 2.在.metadata下…

skt7850鸿蒙策略,lol 英雄联盟 SKT状态回暖轻取外卡,SUP难挡Faker

MSI 第四日 SUP vs SKT双方bpBAN LISTBAN:SUP:流浪 牛头 豹女SKT:巴德 妖姬 鱼人PICKSUP:大树 男枪 冰女 卢锡安 锤石SKT:艾克 千珏 沙皇 EZ 布隆比赛开始,双方正常对线开局。前期下路锤石多次勾中ez,男枪也来逼出EZ布…

spring集成struts2

Struts2前身是WebWork,核心并没有改变,其实就是把WebWork改名为struts2,与Struts1一点关系没有。 Struts2中通过ObjectFactory接口实现创建及获取Action实例,类似于Spring的IoC容器,所以Action实例可以由ObjectFactory…

Android学习之查看网络图片

在这里小编学习了查看网络图片的小案例,: 初始界面: 点击浏览后,效果如下: 需要注意的是 该案例需要获取联网权限,即: <uses-permission android:name"android.permission.INTERNET"/>具体步骤如下: 1.定义并初始化控件: private EditText etImageUrl;private …

vue 转为静态html,Vue CLI 3使用:HTML和静态资源(五)

HTMLpublic/index.html 文件是一个会被 html-webpack-plugin 处理的模板。构建中&#xff0c;各种资源路径会被注入解析。可以使用 lodash template 语法插入内容。用来做不转义插值&#xff1b;用来做 HTML 转义插值&#xff1b;用来描述 JavaScript 流程控制。除了被 html-we…

从html导出带样式的excel,Jquery导出带样式的Excel

工作中做导出的时候&#xff0c;需要导出自定义的表格或嫌弃导出的Excel格式太难看了。需要设置颜色、字号大小、加粗、合并单元格等等。特性&#xff1a;支持过滤 某个位置支持过滤 img 标签支持过滤 a 标签支持过滤 input 标签支持包含 行内样式。HTML页面&#xff1a;HTML页…

云计算机创意名,有创意的道路名字推荐,分享一些好听有内涵的路名

提到龙岗板块&#xff0c;“风向”一直飘忽不定。原本地铁4号线今年通车&#xff0c;但是因为五象火车站的规划建设&#xff0c;暂时未开通;机场线已经敲定&#xff0c;然而没有龙岗的份…… [本文来自&#xff1a;www.777y.com]虽然机场线暂时无缘(可以期待下)&#xff0c;但是…

250W电源带i7+GTX1080?

电源的科学: Q1&#xff1a;电源的额定功率是什么&#xff1f;峰值功率又是什么&#xff1f;A1&#xff1a;电源的额定功率就是电源正常工作时的功率&#xff0c;它的值为用电器的额定电压乘以额定电流。而峰值功率指的是电源短时间内能达到的最大功率&#xff0c; 一般情况下电…

2018清华计算机类专业录取分数线,清华大学2018年各省录取分数线及各专业录取分数线 - 高教网...

【一批录取分数线】港澳台联招&#xff1a;630分安徽&#xff1a;理科689分&#xff1b;文科675分&#xff1b;理科定向683分北京&#xff1a;理科694分&#xff1b;文科677分福建&#xff1a;理科681分&#xff1b;文科650分甘肃&#xff1a;理科652分&#xff1b;文科637分广…

怎么用计算机连接电视,电脑怎么连接电视 详细步骤【图文】

现在一般的LED电视机都有连接电脑的功能&#xff0c;如何让电脑连接电视&#xff0c;让电视的大屏幕成为电脑的显示器呢?下面给大家说明电脑连接电视详细步骤!电脑连接电视步骤&#xff1a;1 电脑连接电视所需的接口及连接线我们先来介绍一下&#xff0c;电视上需要的接口&…

4r照片尺寸是多大_数码照片4D、4R、6RW是什么意思,怎样调整4D照片尺寸?

数码照片4D、4R、6RW是什么意思,怎样调整4D照片尺寸?数码相机和DV进入寻常百姓家&#xff0c;有些朋友希望把外出旅游或者居家时拍的照片冲印出来&#xff0c;但是一些朋友对里面的专业说法不太熟悉&#xff0c;比如3R,4R,4D,5D,5R,6R等照片的规格和尺寸不清楚&#xff0c;其实…