Jenkins 整合 Docker 自动化部署
Docker 安装 Jenkins 配置自动化部署
1. Docker 安装 Jenkins
1.1 拉取镜像文件
docker pull jenkins/jenkins
1.2 创建挂载文件目录
mkdir -p $HOME/jenkins_home
1.3 启动容器
docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins
1.4 进入容器查看初始密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
1.5 登录控制台完成初始化
选择安装推荐的插件

2. 配置自动化部署
2.1 配置项目文件
2.1.1 创建DockerFile文件
文件位置与Java文件目录位置平级:
${WORKSPACE}/src/main/java
${WORKSPACE}/src/main/docker/DockerFile
# 该镜像需要依赖的基础镜像
FROM openjdk:8
ARG JAR_FILE
# 复制打包完成后的jar文件到/opt目录下
COPY ${JAR_FILE} /project-name.jar
# 运行过程中创建一个project-name.jar文件
RUN bash -c 'touch /project-name.jar'
# 声明服务运行在端口
EXPOSE 8801
ENV JAVA_OPTS="-Xms512m -Xmx2048m"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /project-name.jar" ]
# 指定维护者的名字
MAINTAINER name
2.1.2 添加pom文件插件
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions><configuration><includeSystemScope>true</includeSystemScope></configuration></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><executions><execution><id>build-image</id><phase>package</phase><goals><goal>build</goal></goals></execution></executions><configuration><!--生产的镜像名称和版本--><imageName>project-category/${project.artifactId}:${project.version}</imageName><dockerHost>http://${dockerHost}:2375</dockerHost><forceTags>true</forceTags><!--dockerfile的位置--><dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory><!--jar名称配置,用在dockerfile中,需要自己写的可不用此配置--><buildArgs><JAR_FILE>${project.build.finalName}.jar</JAR_FILE></buildArgs><!--jar源位置--><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration><dependencies><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency></dependencies></plugin></plugins><!--build节点增加内容--><resources><resource><directory>src/main/resources</directory><!--开启过滤,用指定的参数替换directory下的文件中的参数--><filtering>true</filtering></resource></resources>
</build>
2.2 配置Jenkins
2.2.1 创建项目部署脚本

2.2.2 选择构建自由风格项目

2.2.3 General - 丢弃旧的构建历史,节省磁盘空间

2.2.4 源码管理 - 配置Git代码地址
1,配置Git地址(SSH)
2,配置账号密码
3,配置代码分支

2.2.5 源码管理 - 高级克隆行为


2.2.6 Build Steps - 调用顶层 Maven 目标

2.2.6.1 编译依赖项目
如果当前项目依赖了本地其他项目,则需要先打包依赖项目,没有则跳过此步骤
目标:clean install -pl rely-project-name -am
POM:${WORKSPACE}/rely-project-name/pom.xml
注:依赖项目的pom文件位置

2.2.6.2 打包部署项目
前提:此步骤需要目标服务器上的Docker进行过
新增用户组操作和开发2375端口操作目标: clean package -Pdev -DdockerHost=ip docker:build
注:-P 代表走不同的配置环境(非必须)
POM:${WORKSPACE}/project-name/pom.xml
注:打包项目的pom文件位置

2.2.7 Build Steps - Execute shell script on remote host using ssh
在目标部署服务器上将代码打包成镜像,并启动为容器
1,配置SSH账号密码
2,Docker启动容器命令
-p 端口设置需要与DockerFile文件设置一致
-d 镜像名称需要与本地项目pom文件中配置的一致

docker stop project-center
echo '----stop container----'
docker rm project-center
echo 'rm cont'
docker rmi `docker images | grep none | awk '{print $3}'`
echo '----rm none images----'
docker run -it --network=host -p 8801:8801 --name project-center -d project-category/project-name:1.0-SNAPSHOT
echo '----start container----'
docker cp -L /usr/share/zoneinfo/Asia/Shanghai project-center:/etc/localtime
docker cp -L /usr/share/zoneinfo/Asia/Shanghai project-center:/etc/timezone
docker restart project-center
相关文章:
Jenkins 整合 Docker 自动化部署
Docker 安装 Jenkins 配置自动化部署 1. Docker 安装 Jenkins 1.1 拉取镜像文件 docker pull jenkins/jenkins1.2 创建挂载文件目录 mkdir -p $HOME/jenkins_home1.3 启动容器 docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkin…...
竞赛选题 题目:基于大数据的用户画像分析系统 数据分析 开题
文章目录 1 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…...
selenium已知一个元素定位同级别的另一个元素
1.需求与实际情况 看下图来举例 (1)需求 想点击test22(即序号-第9行)这一行中右边的“复制”这一按钮 (2)实际情况 只能通过id或者class定位到文件名这一列的元素,而操作这一列的元素是不…...
Kotlin中 for in 是有序的吗?forEach呢?
我们要遍历一个数组、一个列表,经常会用到kotlin的 for in 语法,但是 for in 是不是有序的呢?forEach是不是有序的呢?这就需要看一下它们的本质了。 数组的 for in // 调用: val arr arrayOf(1, 2, 3) for (ele in …...
每日一练2023.11.27———连续因子【PTA】
题目链接:L1-006 连续因子 题目要求: 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3567,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数&#…...
P8A002-CIA安全模型-配置Linux描述网络安全CIA模型之可用性案例
【预备知识】 可用性(Availability) 数据可用性是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力…...
SpringCloudAlibaba之sentinel 流量卫兵(流控,熔断降级) ——详细讲解
目录 一、什么是sentinel 二、sentinel使用 1. sentinel dashboard的安装 2.启动 3.访问web界面 编辑 4.登录 三、sentinel 实时监控服务 1.创建项目引入依赖 2.配置 3.启动服务 4.访问dashboard界面查看服务监控 5.开发服务 6.启动进行调用 7.查看监控界面 四、senti…...
C++封装dll和lib 供C++调用
头文件interface.h #pragma once #ifndef INTERFACE_H #define INTERFACE_H #define _CRT_SECURE_NO_WARNINGS #define FENGZHUANG_API _declspec(dllexport) #include <string> namespace FengZhuang {class FENGZHUANG_API IInterface {public:static IInterface* Cre…...
ffmpeg播放器实战(播放器流程)
1.流程图 1.main窗口创建程序窗口 程序窗口构造函数执行下面内容 2.开启播放 3.开启解码 4.开启渲染 5.反馈给ui 本文福利, 免费领取C音视频学习资料包学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg…...
Android 13.0 开机过滤部分通知声音(莫名其妙的通知声音)
1.概述 在13.0的系统定制开发产品的中,有时候在系统开机的时候会有一些通知的声音,但是由于系统模块太多,也搞不清楚到底是哪个模块发出的通知声音,所以就需要从通知的流程来屏蔽这些通知声音,接下来看具体怎么实现在开机的时候过滤开机声音的功能 2.开机过滤部分通知声音…...
Adversarial Attack and Defense on Graph Data: A Survey(2022 IEEE Trans)
Adversarial Attack and Defense on Graph Data: A Survey----《图数据的对抗性攻击和防御:综述》 图对抗攻击论文数据库: https://github.com/safe-graph/graph-adversarial-learning-literature 摘要 深度神经网络(DNN)已广泛应…...
css中flex两列布局(一列自适应其他固定)
问题 最近写一个布局的时候,遇到一个问题。如下图的布局。在没有图片的时候布局是正常的,如果有图片且设置了width:100%;height: 100%; 则会出现图片将自适应布局撑开的情况。 我的解决方式是让图片不缩放,图片外层再添加一个div元素。形如…...
【深度学习】gan网络原理实现猫狗分类
【深度学习】gan网络原理实现猫狗分类 GAN的基本思想源自博弈论你的二人零和博弈,由一个生成器和一个判别器构成,通过对抗学习的方式训练,目的是估测数据样本的潜在分布并生成新的数据样本。 1.下载数据并对数据进行规范 transform tran…...
⑨【Stream】Redis流是什么?怎么用?: Stream [使用手册]
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ⑨Redis Stream基本操作命令汇总 一、Redis流 …...
浙江启用无人机巡山护林模式,火灾扑救效率高
为了保护天然的森林资源,浙江当地林业部门引入了一种创新技术:林业无人机。这些天空中的守护者正在重新定义森林防火和护林工作的方式。 当下正值天气干燥的季节,这些无人机开始了它们的首次大规模任务。它们在指定的林区内自主巡逻ÿ…...
Starrocks异步物化视图的使用以及注意事项
最近在使用starrocks来进行实时数据项目的开发,尝试使用了一下starrocks的异步物化视图。 使用版本: 3.1.2-4f3a2ee 创建三个测试表, 注意只有test_mv_table1为分区表,其他两个都是非分区表: CREATE TABLE test_mv_table1 (periodday DATE NOT NULL CO…...
SpringBoot整合Sharding-Jdbc实现分库分表和分布式全局id
SpringBoot整合Sharding-Jdbc Sharding-Jdbc sharding-jdbc是客户端代理的数据库中间件;它和MyCat最大的不同是sharding-jdbc支持库内分表。 整合 数据库环境 在两台不同的主机上分别都创建了sharding_order数据库,库中都有t_order_1和t_order_2两张…...
「江鸟中原」有关HarmonyOS-ArkTS的Http通信请求
一、Http简介 HTTP(Hypertext Transfer Protocol)是一种用于在Web应用程序之间进行通信的协议,通过运输层的TCP协议建立连接、传输数据。Http通信数据以报文的形式进行传输。Http的一次事务包括一个请求和一个响应。 Http通信是基于客户端-服…...
vuex的使用笔记
1.安装 npm安装 npm install vuexnext --saveyarn安装 yarn add vuexnext --save2.基本结构 import Vuex from vuexconst store createStore({ //状态:相当于vue中的data() state() {return {name: 0,code:"",todos: [{ id: 1…...
汇编:关于栈的知识
1.入栈和出栈指令 2. SS与SP 3. 入栈与出栈 3.1 执行push ax ↑↑ 3.2 执行pop ax ↓↓ 3.3 栈顶超界的问题 4. 寄存器赋值 基于8086CPU编程时,可以将一段内存当作栈来使用。一个栈段最大可以设为64KB(0-FFFFH)。 1.入栈和出栈指令…...
JSP 核心基础|动作标签与内置对象全解析
目录 一、JSP 核心基础 二、JSP 动作元素 1. include 动作标签 案例: (1)被包含页面(includedemo.jsp) (2)主包含页面(testinclude.jsp) 2. forward 动作标签 案…...
3大突破!Path of Building数值革命:从经验猜想到数据驱动的Build构建方法
3大突破!Path of Building数值革命:从经验猜想到数据驱动的Build构建方法 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 副标题:从天…...
PowerShell中的环境变量与编码问题
在使用PowerShell脚本处理配置文件和环境变量时,编码问题常常是开发者们面临的一个挑战。本文将通过一个具体的实例,探讨如何处理PowerShell中的环境变量编码问题,特别是当环境变量包含特殊字符(如反引号)时。 问题描述 假设你正在使用Drone CI执行一些PowerShell命令,…...
Z-Image-Turbo广告设计:多语言海报生成系统
Z-Image-Turbo广告设计:多语言海报生成系统 1. 引言 电商商家每天需要制作大量商品海报,人工设计成本高且效率低。传统设计流程需要找设计师、反复沟通修改,一张海报从构思到完成往往需要数小时甚至数天时间。对于需要覆盖多个市场的品牌来…...
Asian Beauty Z-Image Turbo商业应用:快速生成品牌宣传东方形象照
Asian Beauty Z-Image Turbo商业应用:快速生成品牌宣传东方形象照 大家好,今天我们来聊一个对品牌方、市场人员和内容创作者特别有吸引力的工具——Asian Beauty Z-Image Turbo。如果你正在为品牌宣传、社交媒体内容或营销活动寻找高质量的东方形象照&a…...
BetterJoy完全指南:让Switch控制器完美适配PC的7个专业技巧
BetterJoy完全指南:让Switch控制器完美适配PC的7个专业技巧 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode…...
Wan2.2-T2V-A5B在自媒体场景实战:批量生成诗意文案短视频
Wan2.2-T2V-A5B在自媒体场景实战:批量生成诗意文案短视频 1. 为什么自媒体需要轻量级视频生成工具 在内容创作领域,短视频已经成为最主流的内容形式之一。特别是结合诗意文案的短视频,在各大平台都拥有极高的用户粘性和传播度。然而&#x…...
千问3.5-2B辅助MATLAB科学计算:算法实现与结果可视化脚本生成
千问3.5-2B辅助MATLAB科学计算:算法实现与结果可视化脚本生成 1. 科研计算的新助手 作为一名经常使用MATLAB的科研工作者,你是否遇到过这样的困扰:明明知道要解决什么数学问题,却卡在代码实现环节?或者花了大量时间调…...
BepuPhysics2查询系统完全指南:射线检测、扫掠查询与体积查询实战
BepuPhysics2查询系统完全指南:射线检测、扫掠查询与体积查询实战 【免费下载链接】bepuphysics2 Pure C# 3D real time physics simulation library, now with a higher version number. 项目地址: https://gitcode.com/gh_mirrors/be/bepuphysics2 BepuPhy…...
Qwen3.5-2B模型Java环境快速配置与Hello World实例
Qwen3.5-2B模型Java环境快速配置与Hello World实例 1. 前言:为什么选择Java调用Qwen3.5-2B 如果你是一名Java开发者,想要快速体验大语言模型的魅力,这篇教程就是为你准备的。Qwen3.5-2B作为一款轻量级但性能出色的开源模型,非常…...

