当前位置: 首页 > news >正文

容器化Jenkins远程发布java应用(方式二:自定义镜像仓库远程拉取构建)

1.创建maven项目

2.配置git、maven

3.阿里控制台>容器镜像服务>镜像仓库>创建镜像仓库

4.执行shell脚本(推送镜像到阿里云镜像仓库)

使用到登录阿里云仓库命令

#!/bin/bash
# 服务名称
SERVER_NAME=planetflix-app
# 镜像tag
IMAGE_TAG=1.0.0-SNAPSHOT
# 镜像名称
IMAGE_NAME=$SERVER_NAME:$IMAGE_TAG# jenkins下的目录
JENKINS_HOME=/var/jenkins_home/workspace/push116_planetflix_images/planetflix-api
cd $JENKINS_HOME
echo "检查docker能不能用"
docker -vecho "------ 开始构建镜像:${SERVER_NAME} ------"
docker build -t ${IMAGE_NAME} -f Dockerfile . --no-cache
echo "------ 镜像构建结束:${IMAGE_NAME} ------"
if [[ -n $(docker ps -q -f "name=^${SERVER_NAME}$") ]];thenecho "------ 容器正在运行:${SERVER_NAME} ------"echo "------ 停止容器:$SERVER_NAME ------"docker stop $SERVER_NAMEecho "------ 删除容器:$SERVER_NAME ------"docker rm $SERVER_NAME
elseecho "------ 容器未在运行:${SERVER_NAME} ------"echo "------ 删除容器:$SERVER_NAME ------"docker rm $SERVER_NAME
fiecho "登录阿里云镜像仓库"
docker login --username=xxx --password=xxx registry.cn-hongkong.aliyuncs.comecho "建立映射中..."
docker tag $IMAGE_NAME registry.cn-hongkong.aliyuncs.com/yygm/devops_planetflix_app_test:$SERVER_NAME-$IMAGE_TAG
echo "镜像推送至阿里云仓库中..."
docker push registry.cn-hongkong.aliyuncs.com/yygm/devops_planetflix_app_test:$SERVER_NAME-$IMAGE_TAGecho "------ 清理虚悬镜像 ------"if [[ -n $(docker images | grep "none" | awk '{print $3}') ]];thendocker rmi -f $(docker images | grep "none" | awk '{print $3}')fi

5.创建Pipline流水线,配置流水线脚本命令(推送部署脚本到远程服务器)

1.作为上面maven项目的钩子执行

2.pipline流水线脚本

env.fileName = "devops116.sh"
env.serverName = "planetflix_app"
env.deployePath = ""
env.sourceFile = "/var/jenkins_home/workspace/shell/devops116.sh"
env.targetPath = "/data/project/java"
pipeline{agent any//定义流水线的加工流程stages {stage('推送部署脚本到海外影视app服务器') {steps {sh """cp -f ${env.sourceFile} ./"""sshPublisher(publishers: [sshPublisherDesc(configName: "${env.serverName}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo "成功推送deploye.sh脚本文件..."', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${env.deployePath}", remoteDirectorySDF: false, removePrefix: '', sourceFiles: "${env.fileName}")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])echo '推送成功'}}stage('运行部署') {steps { sshPublisher(publishers: [sshPublisherDesc(configName: "${env.serverName}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "sh ${env.targetPath}/deploye_run.sh", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])echo "部署完成"}}}
}

3.plpline远程运行部署的deploye_run.sh脚本内容

#!/bin/bash
# 服务名称
SERVER_NAME=prod-shortplay-web
# 镜像tag
IMAGE_TAG=1.0.0-SNAPSHOT
# 镜像名称
IMAGE_NAME=$SERVER_NAME:$IMAGE_TAGecho "登录阿里云镜像仓库"
docker login --username=xxx--password=xxx registry.cn-hongkong.aliyuncs.comdocker pull registry.cn-hongkong.aliyuncs.com/yygm/private_deploye_ku:$SERVER_NAME-$IMAGE_TAGif [[ -n $(docker ps -q -f "name=^${SERVER_NAME}$") ]];thenecho "------ 容器正在运行:${SERVER_NAME} ------"echo "------ 停止容器:$SERVER_NAME ------"docker stop $SERVER_NAMEecho "------ 删除容器:$SERVER_NAME ------"docker rm $SERVER_NAME
elseecho "------ 容器未在运行:${SERVER_NAME} ------"echo "------ 删除容器:$SERVER_NAME ------"docker rm $SERVER_NAME
fiecho "------ 开始运行容器:$SERVER_NAME ------"
# 运行镜像,这里的8077是项目服务端口
docker run -t --network=compose_mid_network -v /data/project/java/logs:/data/project/java/logs -d -p 8077:8077 --name $SERVER_NAME registry.cn-hongkong.aliyuncs.com/yygm/private_deploye_ku:$SERVER_NAME-$IMAGE_TAG

6.启动并查看服务

使用docker image查看镜像是否生成

使用docker ps 查看服务是否启动

查看日志docker logs -f -n 500 容器名

相关文章:

容器化Jenkins远程发布java应用(方式二:自定义镜像仓库远程拉取构建)

1.创建maven项目 2.配置git、maven 3.阿里控制台>容器镜像服务>镜像仓库>创建镜像仓库 4.执行shell脚本(推送镜像到阿里云镜像仓库) 使用到登录阿里云仓库命令 #!/bin/bash # 服务名称 SERVER_NAMEplanetflix-app # 镜像tag IMAGE_TAG1.0.0-SN…...

解密某游戏的数据加密

前言 最近有个兄弟通过我的视频号加我,咨询能否将这个dubo游戏游戏开始前就将数据拿到从而进行押注,于是通过抓包工具测试了下,发现数据有时候是明文,有时候确实密文,大致看了下有这几种加密:Md5aes、Md5&a…...

【报错合集】完美解决“虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本”

文章目录 解决方案:更改设置的硬件版本 今天我需要将别人的虚拟机克隆到我的VMware Workstation上运行,结果发生了以下的错误: 刚开始以为是VMware Workstation的版本问题太低导致的,所以我删除了原来的那个版本,下载…...

YOLOv8小白中的小白安装环境教程!没一个字废话,看一遍不踩坑!

文章目录 去哪里下代码?怎么下代码?怎么装环境?命令行界面(CLI)指令和Python脚本区别?附录1 conda常用指令附录2 git常用指令附录3 项目代码文件作用去哪里下代码? 下载代码请大家直接去 YOLOv8的官方仓库下载,名字叫 ultralytics,有些镜像网站和个人发的等来历不明的代…...

C#正则表达式,提取信息使用

正则表达式简介 在C#中,正则表达式(Regular Expression,通常简写为regex或regexp)是一种功能强大的文本处理工具,它使用特定的字符序列来定义搜索模式,从而实现对文本的高效搜索、匹配和替换操作。正则表达…...

【数据结构】详解队列

现在我们来掌握一下队列!如果有对往期知识有不足地方,可翻阅之前文章哦! 个人主页:小八哥向前冲~-CSDN博客 所属专栏:数据结构【c语言版】_小八哥向前冲~的博客-CSDN博客 栈和队列的实现其实都是对你顺序表和链表的检验…...

大模型微调方法汇总

微调方法 Freeze方法P-tuning方法 prefix-tuningPrompt TuningP-tuning v1P-tuning v2Lora方法 重要相关参数LoRA 的优势Qlora方法 相关参数微调经验 模型选择模型大小选择数据处理微调方案英文模型需要做词表扩充吗?如何避免灾难遗忘大模型的幻觉问题微调后的输出…...

探究NVMe SSD HMB应用场景与影响-<续>

如果需要采用HMB功能,需要SSD支持NVME协议且NVMe 1.2及以上版本。NVME协议中对HMB对应有2个关键参数: HMB建议值(HMPRE):设定实际分配给HMB使用的主机内存容量,为设备提供最优性能的内存分配量。 HMB最小值…...

YTU 3166 共享单车 DFS 记忆化搜索

问题 D: 共享单车 题目描述 共享单车走进烟台,小明决定尝试。小明启动共享单车 App,轻松地找到附近的单车。那么问题来了,到最近的那辆单车,小明大约要走多少米呢? 现在简化问题。将地图设定成一个由 100100 米的像…...

RAG应用中的路由模式

依据的用户查询意图在 RAG 应用程序使用“路由控制模式”可以帮助我们创建更强大的 RAG 应用程序。我们通常希望用户能够访问的数据可以来自各种来源,如报告、文档、图片、数据库和第三方系统。 对于基于业务的 RAG 应用程序,我们可能还希望用户能够与其它业务系统进行交互,…...

运维:SSH常用命令简介

SH,全称为Secure Shell,是建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。通过 SSH 可以对所有传输的数据进行加密&…...

Springboot+Vue项目-基于Java+MySQL的流浪动物管理系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…...

力扣刷题:四数相加Ⅱ

题目详情: 解法一:暴力枚举 对于这道题,我们的第一思路就是暴力枚举,我们可以写一个四层的for循环进行暴力匹配,只要相加的结果等于0就进行统计。但是我们会发现,我们的事件复杂度为O(N^4)事件复杂度非常大…...

如果通过Glide 设置图片圆角

要给图片设置一个圆角,通常方法是在ImageView 标签外添加一个CardView 标签,然后设置圆角值,但是今天遇到一个问题就是 RecyclerView Item 中这样操作的话会遇到这样的一个报错: Cannot call this method while RecyclerView is computing a layout or scrolling androidx.rec…...

Chatgpt学习技巧

论文润色指令 论文润色常用指令 通用话术: Below is a paragraph from an academic paper. Polish the writing to meet the academic style, improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole se…...

[初学rust] 06_rust 元组

rust 元组 表现形式 和python的元组类似,rust中的元组是一个有序列表,可以包含多种不同类型的数据。 let tup (500, 6.4, a);模式匹配解构元组 和python中的解构一样,rust也支持模式匹配解构元组,但是需要注意的是&#xff0…...

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (四)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 (四) 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第三部分:工具使用 工具的使用是人类的一个显着而显着的特征。我们创造、修改和利用外部物体来完成超…...

C++进阶:哈希(1)

目录 1. 简介unordered_set与unordered_map2. 哈希表(散列)2.1 哈希表的引入2.2 闭散列的除留余数法2.2.1 前置知识补充与描述2.2.2 闭散列哈希表实现 2.3 开散列的哈希桶2.3.1 结构描述2.3.2 开散列哈希桶实现2.3.3 哈希桶的迭代器与key值处理仿函数 3.…...

第三节课,功能2:开发后端用户的管理接口-- postman--debug测试

一、如何使用postman 网址: https://www.postman.com/downloads/ 【Postman小白教程】五分钟学会如何使用Postman~_哔哩哔哩_bilibili postman安装使用_bowser agent在postman哪里-CSDN博客 二、下载后 登录,开始测试 2.1 关于postman 报错&#…...

Docker-compsoe部署prysm-beacon-chain + geth服务(geth版本v1.14.0)

1、创建目录结构 ~ # mkdir -p /data/docker-compose/eth ~ # cd /data/docker-compose/eth /data/docker-compose/eth# mkdir beacondata eth ethdata prysm2、编写prysm-beacon-chain Dockerfile和启动脚本文件 /data/docker-compose/eth# vim Dockerfile /data/docker-…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...