Coding(Jenkinsfile)+ Docker 自动化部署 Springboot —— 图文细节和一些注意事项说明
前言:本章讲述一下我使用Coding(Jenkinsfile)+ Docker部署Springboot项目过程,记录图文细节和一些需要注意的问题。
说明:为什么要使用Coding去集成Docker?
- 节约了服务器内存,不需要单独部署 Jenkins。(Jenkins内存占用较多)
- 方便管理,代码和部署放在同一个地方,同时也支持其他的工作协同。
- Coding也支持其他的部署方式,同时文档也较为齐全。
1. 配置服务器环境
(前面几篇已经配置过了,可以作为参考)
-
Docker安装的图文细节
-
MySQL安装的图文细节
-
Redis安装的图文细节
2. 创建一个Springboot项目
1. 这里我使用一个优秀的开源项目为例:芋道源码
(运行项目需要安装JDK,MySQL,Redis,可以参考官方文档运行)
2. 拉取代码,修改配置
(这里我使用的环境是JDK21、MySQL8.0、Redis7.4)
- 拉取代码之后切换分支到
master-jdk17(JDK8使用默认的master分支) - 等待下载
Maven依赖,同时修改application文件-
application.yaml的spring.profiles.active修改为dev

-
application-dev.yaml的MySQL和Redis配置全部修改为自己的服务

-
3. 运行项目,访问http://127.0.0.1:48080/


(如图:正常运行启动,如果不能正常启动,可以参考源码文档排查问题)
3. 把代码提交到Coding
1. 在Coding本地创建仓库
2. 修改本地代码的Git远程地址
3. 推送到Coding仓库上
4. 编写Jenkinsfile脚本
1. 选择: 构建计划 > java + Spring +Docker

2. 开始创建计划



如果你使用的系统较新的系统,推荐使用账号和密码生成凭证。
(刚开始的时候我是使用的是密钥,但是我的系统是CentOS9,不兼容较旧的Jenkins插件,这里踩坑了,我在官方的文档里也找到错误说明。)

3. 流程配置

- 文本编辑器里我是这样配置的
pipeline {agent anystages {stage('检出') {steps {checkout([$class: 'GitSCM',branches: [[name: GIT_BUILD_REF]],userRemoteConfigs: [[url: GIT_REPO_URL,credentialsId: CREDENTIALS_ID]]])}}stage('编译') {agent {docker {reuseNode trueregistryUrl 'https://coding-public-docker.pkg.coding.net'image 'public/docker/openjdk:21-2024.03'args '-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --entrypoint='}}steps {sh 'mvn clean install -DskipTests -Dmaven.test.skip=true'}}stage('构建镜像并推送到 CODING Docker 制品库') {steps {script {docker.withRegistry("${CCI_CURRENT_WEB_PROTOCOL}://${CODING_DOCKER_REG_HOST}","${CODING_ARTIFACTS_CREDENTIALS_ID}") {// 输出当前目录信息echo "Current directory: ${env.WORKSPACE}"// 切换到 yudao-server 目录dir('yudao-server') {// 构建 Docker 镜像def dockerImage = docker.build("${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION}", "-f Dockerfile ${DOCKER_BUILD_CONTEXT}")dockerImage.push()}}}}}stage('部署到远端服务') {steps {script {def remoteConfig = [:]remoteConfig.name = "my-remote-ltby"remoteConfig.host = "${REMOTE_HOST}"remoteConfig.port = 22remoteConfig.allowAnyHosts = truewithCredentials([usernamePassword(credentialsId: "${REMOTE_CRED}",passwordVariable: 'password',usernameVariable: 'userName'),]) {// SSH 登录用户名remoteConfig.user = userName// 密码登录remoteConfig.password = passwordsshCommand(remote: remoteConfig,command: "docker rm -f spring-boot | true",sudo: true,)// DOCKER_IMAGE_VERSION 中涉及到 GIT_LOCAL_BRANCH / GIT_TAG / GIT_COMMIT 的环境变量的使用// 需要在本地完成拼接后,再传入到远端服务器中使用DOCKER_IMAGE_URL = sh(script: "echo ${CODING_DOCKER_REG_HOST}/${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION}",returnStdout: true)sshCommand(remote: remoteConfig,command: "docker run -d -p 48080:48080 --name spring-boot ${DOCKER_IMAGE_URL}",sudo: true,)echo "部署成功,请到 http://${REMOTE_HOST}:48080 预览效果"}}}}}environment {CODING_DOCKER_REG_HOST = "${CCI_CURRENT_TEAM}-docker.pkg.${CCI_CURRENT_DOMAIN}"CODING_DOCKER_IMAGE_NAME = "${PROJECT_NAME.toLowerCase()}/${DOCKER_REPO_NAME}/${DOCKER_IMAGE_NAME}"}}
提醒:如果你使用的也是
jdk17以上的版本,需要注意编译的时候不要使用默认的构建环境,因为maven版本较低,jdk17以上的版本会报错(我是用的脚本是jdk21的编译环境,如果你使用的是jdk8,需要修改第19行代码:image public/docker/openjdk:8-2024.03)
4. 修改触发规则
- 根据你的需求进行修改,也可以使用默认的

5. 修改变量和缓存
- 根据你的需求进行修改

6. 修改通知提醒
- 根据你的需求进行修改
7. 修改权限方案
- 根据你的需求进行修改
5. 开始构建
由于系统和环境的不同,可能出现各种问题,配置的时候尽量不加太多变量。

6. 构建成功
- 这里需要等待5-10分钟。

- 访问地址:http://xxx.xxx.xxx.xxx:48080 (xxx替换为服务器IP)

- 如图:可以正常访问到后台接口,部署成功
结束语:使用
Coding(Jenkinsfile)集成Docker自动化部署Springboot项目的基础配置大致上就是这样了。因为步骤较多,所以有很多地方就简略的用图文表达了。
——如果觉得文章有用💪,点个赞,支持一下👏!——
相关文章:
Coding(Jenkinsfile)+ Docker 自动化部署 Springboot —— 图文细节和一些注意事项说明
前言:本章讲述一下我使用Coding(Jenkinsfile) Docker部署Springboot项目过程,记录图文细节和一些需要注意的问题。 说明:为什么要使用Coding去集成Docker? 节约了服务器内存,不需要单独部署 Jen…...
docker django uwsgi 报错记录
这个配置中是能够正常进行网页访问的,能够查看网页 [uwsgi] chdir /home/luichun/lc/Pyfile/PyCursor/app module app.wsgi:application plugin-dir /usr/lib/uwsgi/plugins plugins python311 env TZAsia/Shanghai socket-timeout 60 websocket-ma…...
数据分析思维(五):分析方法——假设检验分析方法
数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》,本文内容就是提取…...
【ES6复习笔记】集合Set(13)
ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,集合实现了iterator接口,所以可以使用『扩展运算符』和『for…of…』进行遍历。 集合的属性和方法 size:返回集合的元素个数。add…...
基础爬虫案例实战
我们已经学习了多进程、requests、正则表达式的基本用法,但还没有完整地实现过一个爬取案例。这一节,我们就来实现一个完整的网站爬虫,把前面学习的知识点串联起来,同时加深对这些知识点的理解。 准备工作 我们需要先做好如下准备工作。 安…...
深度学习工作:从追求 SoTA 到揭示新现象
TLDR:主要讨论了从追求模型 SoTA 到揭示新现象的转变。通过几个例子,包括ACNet到RepVGG的发展,RIFE插帧、Film插帧,以及OpenAI的近期工作,阐述了这种转变的重要性。 知乎:黄哲威 hzwer链接:http…...
学习记录—正则表达式-基本语法
正则表达式简介-《菜鸟教程》 正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 本期内容将介绍普通字符,特殊…...
智慧农业物联网传感器:开启农业新时代
在当今科技飞速发展的时代,农业领域正经历着一场前所未有的变革,而智慧农业物联网传感器无疑是这场变革中的关键利器。它宛如农业的 “智慧大脑”,悄然渗透到农业生产的各个环节,为传统农业注入了全新的活力,让农业生产…...
普通人怎么入门学习并使用AI?
前言 作为普通人看着AI一天一天变革,心急如焚,未来但是就是不知道怎么才算真正进入了AI,使用AI....作为从头至尾追随AI脚步的码农有几点小建议~ 一、💻使用 AI 网站或软件,解决实际问题 不管用哪种AI,先用…...
Java中处理if-else的几种高级方法
前言 在我看来多写几个if-else没啥大不了的,但是就是看起来没啥逼格,领导嫌弃。我根据开发的经历写几个不同的替代方法 一、枚举法替代 我先前写了一篇文章,可以去看看。 通过枚举替换if-else语句的解决方案_枚举代替if else c语言-CSDN博…...
前端知识补充—CSS
CSS介绍 什么是CSS CSS(Cascading Style Sheet),层叠样式表, ⽤于控制⻚⾯的样式 CSS 能够对⽹⻚中元素位置的排版进⾏像素级精确控制, 实现美化⻚⾯的效果. 能够做到⻚⾯的样式和结构分离 基本语法规范 选择器 {⼀条/N条声明} 1)选择器决定针对谁修改…...
企业架构学习笔记-数字化转型
1. 企业数字化发展阶段 案例1.业务部门“点菜”,IT部门叫苦 随着企业信息化进程的不断推进,IT部门的角色和面临的挑战也在发生显著变化。在信息化建设的初级阶段,确实存在IT部门需要积极引导和说服业务部门重视信息技术价值的情况。当时&am…...
Linux网络——TCP的运用
系列文章目录 文章目录 系列文章目录一、服务端实现1.1 创建套接字socket1.2 指定网络接口并bind2.3 设置监听状态listen2.4 获取新链接accept2.5 接收数据并处理(服务)2.6 整体代码 二、客户端实现2.1 创建套接字socket2.2 指定网络接口2.3 发起链接con…...
Vue3之状态管理Vuex
Vuex作为Vue.js的官方状态管理库,在大型或复杂的前端项目中扮演着至关重要的角色。本文将从Vuex的原理、特点、应用场景等多个方面进行深入解析,并通过代码示例展示如何在Vuex中实现特定功能。 一、Vuex原理 Vuex是一个专为Vue.js应用程序开发的状态管…...
DPO(Direct Preference Optimization)算法解释:中英双语
中文版 DPO paper: https://arxiv.org/pdf/2305.18290 DPO 算法详解:从理论到实现 1. 什么是 DPO? DPO(Direct Preference Optimization)是一种直接基于人类偏好进行优化的算法,旨在解决从人类偏好数据中训练出表现…...
Hostapd2.11解析笔记
最近在调试Hostapd,尝试通过配置使能一个支持MLO的AP,不过不知道hostapd conf里面哪些选项开启后可以使能,所以对Hostapd做一个整体解析. 简介 hostapd 是用于接入点和身份验证服务器的用户空间守护程序。它实现 IEEE 802.11 接入点管理、IEEE 802.1X/WPA/WPA2/WPA3/EAP 身份…...
js控制文字溢出显示省略号
.text{display: -webkit-box;overflow: hidden;white-space: normal;text-overflow: ellipsis;word-wrap: break-word;-webkit-line-clamp: 2;-webkit-box-orient: vertical; }本人有个需求就是在一个盒子内有一段文本,然后控制文本显示两行,第二行要显示…...
WPF+MVVM案例实战与特效(四十七)-实现一个路径绘图的自定义按钮控件
文章目录 1、案例效果2、创建自定义 PathButton 控件1、定义 PathButton 类2、设计样式与控件模板3、代码解释3、控件使用4、直接在 XAML 中绑定命令3、源代码获取4、总结1、案例效果 2、创建自定义 PathButton 控件 1、定义 PathButton 类 首先,我们需要创建一个新的类 Pat…...
操作002:HelloWorld
文章目录 操作002:HelloWorld一、目标二、具体操作1、创建Java工程①消息发送端(生产者)②消息接收端(消费者)③添加依赖 2、发送消息①Java代码②查看效果 3、接收消息①Java代码②控制台打印③查看后台管理界面 操作…...
odoo中@api.model, @api.depends和@api.onchange 装饰器的区别
文章目录 1. api.model用途特点示例 2. api.depends用途特点示例 3. api.onchange用途特点示例 总结 在 Odoo 中,装饰器(decorators)用于修饰方法,以指定它们的行为和触发条件。api.model、api.depends 和 api.onchange 是三个常用…...
linux source命令作用及使用场景
source 是 Linux/Unix 系统中的一个内置 Shell 命令,主要用于在当前 Shell 环境中执行脚本文件(而非启动子 Shell),从而直接影响当前环境(如变量、函数、别名等)。以下是其详细作用及使用场景: …...
若依(ruoyi)RuoYiApp版—页面
ruoyiApp中的页面是一个符合vue规范的文件,如果你熟悉vue,这里将非常快速上手。 1.如何新增页面 uni-app中的页面,默认保存在工程根目录下的pages目录下。 每次新建页面,均需在pages.json中配置pages列表;未在pages.js…...
AI智能体(Agent)的底层逻辑
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、核心模块? 二、工作流程 三、关键设计思想 3.1 ReAct 模式 3.2 工具调用(Function Calling) 3.3 记忆管理 3.4 多智能体…...
QKeyMapper终极指南:如何在不重启Windows的情况下彻底改变你的按键习惯
QKeyMapper终极指南:如何在不重启Windows的情况下彻底改变你的按键习惯 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到…...
MRiLab:基于多物理场耦合的磁共振成像全流程仿真平台
MRiLab:基于多物理场耦合的磁共振成像全流程仿真平台 【免费下载链接】MRiLab A Numerical Magnetic Resonance Imaging (MRI) Simulation Platform 项目地址: https://gitcode.com/gh_mirrors/mr/MRiLab MRiLab作为开源数值磁共振成像仿真平台,通…...
MindSpore 环境配置完全指南
1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...
收藏必备!小白程序员轻松入门大模型,带你理清AI核心概念全框架
AI浪潮已经刮了一年多,身边越来越多人聊AI,张口就是“agent”“skill”,听得人只能点头附和,似懂非懂?其实不是听不懂,而是没有把这些概念串起来,告诉你它们到底是什么、彼此有啥关系。 咱不聊复…...
《数字图像处理》实战:从傅里叶到小波,解锁图像变换的时空密码
1. 图像变换的时空密码:从傅里叶到小波 当你用手机拍摄一张照片时,是否想过这张看似简单的图片背后隐藏着怎样的数学奥秘?图像处理领域的变换技术就像是一把钥匙,能够解开图像中隐藏的时空密码。在众多变换方法中,傅里…...
SEER‘S EYE模型学术应用:LaTeX论文写作辅助与公式校对
SEERS EYE模型学术应用:LaTeX论文写作辅助与公式校对 写论文,尤其是理工科的论文,最头疼的是什么?十有八九会提到LaTeX。从搭建文档结构、处理复杂的数学公式,到确保格式规范、检查符号一致性,每一步都可能…...
完整B站字幕提取解决方案:三步搞定视频字幕获取与转换
完整B站字幕提取解决方案:三步搞定视频字幕获取与转换 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾经在B站看到精彩的教学视频,…...
