8.jib-maven-plugin构建springboot项目镜像,docker部署配置
目录
1.构建、推送镜像
1.1 执行脚本
2.2 pom.xml配置
2.部署镜像服务
2.1 执行脚本
2.2 compose文件
3.docker stack常用命令
介绍:使用goole jib插件构建镜像,docker stack启动部署服务;
通过执行两个脚本既可以实现构建镜像、部署服务的过程。本文将对两个脚本及其他核心配置文件做详细解释。
1.构建、推送镜像
1.1 执行脚本
执行脚本sh build.sh即可,脚本位于项目根目录下,脚本build.sh内容如下:
#!/bin/bash
echo "start build myApp image...."# 指定选择prod环境
# 指定登录用户名/密码 admin/admin@server1,如果仓库没有设置登录验证,去掉此配置即可
# 通过goole的jib工具构建镜像,并将镜像推送到192.168.100.90:5000镜像仓库
# DsendCredentialsOverHttp=true,仓库是http则需要加上此参数配置mvn clean compile jib:build -Djib.to.auth.username=admin -Djib.to.auth.password=admin@server1 -Djib.to.image=192.168.100.99:5000/myApp/backend_prod:2.2 -DsendCredentialsOverHttp=true -Djib.container.jvmFlags=-Dspring.profiles.active=dev,-Duser.timezone=Asia/Shanghai,-Xms4096m,-Xmx6144m,-Xmn512mecho "end build myApp image...."
说明:选择prod环境配置,maven 清理后并编译打包代码,再通过jib工具构建镜像并推送到镜像仓库。
执行成功如下:

2.2 pom.xml配置
由于需要goole的jib插件,所以需要在pom.xml中配置jib,配置如下:
2.部署镜像服务
2.1 执行脚本
sh deploy.sh start
在镜像所在服务器的(deploy.sh、docker-compose.yaml文件)目录下执行此脚本命令即可。deploy.sh脚本内容如下:
#!/bin/bash
cmd="$1"service="$2"
config="$3"basepath=$(cd `dirname $0`; pwd)login(){docker login 192.168.100.90:5000 --username=admin --password=admin@server1
}start(){echo "启动/更新服务"#如果192.168.100.90:5000设有密码则需要登录,如果没有则注释掉此行命令;#docker login 192.168.100.90:5000 --username=admin --password=admin@server1#此处调用登陆方法,作用同上行注释命令login# 部署镜像服务,起名为myAppService。# -c , --compose-file:指定stack file的路径位置为同此脚本目录下的docker-compose.yaml文件#--with-registry-auth,向swarm代理发送registry认证详细信息docker stack deploy -c $basepath/docker-compose.yaml myAppService --with-registry-auth
}down(){docker stack rm $service
}# 查询stack服务中的容器运行状态
ps(){docker stack ps $service
}usage(){echo "start version - 启动/更新服务"echo "down - 删除服务"echo "ps - 查看服务中容器的运行状态"echo "login - 登录镜像仓库"
}if [[ $cmd = "start" ]]; thenstart
elif [[ $cmd = "down" ]]; thendown
elif [[ $cmd = "ps" ]]; thenps
elif [[ $cmd = "login" ]]; thenlogin
elseusage
fi
2.2 compose文件
docker-compose.yaml文件内容如下:
#指定compose文件版本
version: '3'
#定义所有的service
services:#定义第一个service,起名为frontbackend:#镜像名称必须要与build.sh中起的名称一模一样image: 192.168.100.90:5000/myApp/backend_prod:2.2#挂载文件 宿主机文件路径:容器内文件路径volumes:- "/usr/local/project_data/my_service/report/:/usr/local/my_service/report/"- "/usr/local/project_data/my_service/json/:/usr/local/my_service/json/"- "/usr/local/project_data/my_service/logs/:/usr/local/my_service/logs/"- "/usr/local/project_data/my_service/model/:/usr/local/my_service/model/"deploy:replicas: 1update_config:parallelism: 1delay: 10srestart_policy:condition: anydelay: 10smax_attempts: 3window: 120sresources:limits:memory: 20240Mreservations:memory: 1024M#端口映射ports:- "9001:9001"
本文件创建了一个名为“backend”的service,也可以在下面继续添加其他服务。(一般情况下将前端服务和后端服务都配置到同一个compose文件中,这样就可以通过deploy.sh同时部署前后端。)
3.docker stack常用命令
启动服务后可通过docker命令查看服务状态:
docker stack ls 查看服务列表
docker stack ps 服务名 查看服务状态
docker stack ps 服务名 --no-trunc 查看服务状态,不要截断输出
docke stack rm 服务名 删除服务
相关文章:
8.jib-maven-plugin构建springboot项目镜像,docker部署配置
目录 1.构建、推送镜像 1.1 执行脚本 2.2 pom.xml配置 2.部署镜像服务 2.1 执行脚本 2.2 compose文件 3.docker stack常用命令 介绍:使用goole jib插件构建镜像,docker stack启动部署服务; 通过执行两个脚本既可以实现构建镜像、部…...
海康威视综合安防管理平台任意文件上传
系统介绍 HIKVISION iSecure Center综合安防管理平台是一套“集成化”、“智能化”的平台,通过接入视频监控、一卡通、停车场、报警检测等系统的设备,获取边缘节点数据,实现安防信息化集成与联动,公众号:web安全工具库…...
Linux环境下C++ 接入OpenSSL
接上一篇:Windows环境下C 安装OpenSSL库 源码编译及使用(VS2019)_vs2019安装openssl_肥宝Fable的博客-CSDN博客 解决完本地windows环境,想赶紧在外网环境看看是否也正常。毕竟现在只是HelloWorld级别的,等东西多了&am…...
美国网站服务器SSL证书介绍
美国网站服务器的SSL证书也是一种数字证书,由权威数字证书机构CA验证网站的身份后所颁发,可实现浏览器与网站主机之间的数据传输加密。美国网站服务器搭建的网站在安装SSL证书后会在浏览器显示安全锁标志,数据传输协议则从HTTP传统协议升级为…...
JSP命令标签 静态包含/动态包含
好 下面我们聊聊JSP中的指令标签 这边 我们来说两个 分别是 静态包含 和 动态包含 我们可以将重用性代码包含起来 更好的使用 比如 我们界面上中下 分别有三个导航栏 那么 如果你写三份 就会出现很多重复代码 而且 改起来 也很不方便 要一次改三份 口说无凭 我们来做一个小案…...
Cesium点位弹窗
1.弹窗没法向加入点位一样加入到地图内部,entity没法实现 2.使用绝对定位,将地图组件通过定位加入到地图上,注意弹窗层级一定在地图上 3.通过判断点击位置是否是点位来获取entity信息,将信息显示在弹窗 4.将点击处点位的经纬度转为…...
基于单片机16路抢答器仿真系统
**单片机设计介绍, 基于单片机16路抢答器仿真系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的16路抢答器仿真系统是一种用于模拟和实现抢答竞赛的系统。该系统由硬件和软件两部分组成。 硬件方面&am…...
Linux常用命令亲测总结
在实际开发中,经常会进行下位机的搭建,在搭建过程中,对于常用的LInux命令进行总结,方便自己使用 1.rm -rf 删除对应文件(字节小的) 2、ln -s 文件关联(长的关联短的。三个则关联两次࿰…...
二百零六、Flume——Flume1.9.0单机版部署脚本(附截图)
一、目的 在实际项目部署时,要实现易部署易维护,需要把安装步骤变成安装脚本实现快速部署 二、部署脚本在Linux中文件位置 文件夹中只有脚本文件flume-install.sh和tar包apache-flume-1.9.0-bin.tar.gz 三、Flume安装脚本 #!/bin/bash #获取服务器名…...
不必购买Mac,这款国产设计工具能轻松替代Sketch!
介绍 即时设计是新一代可以直接在浏览器中使用的设计工具,具有Sketch和实时协作功能。与本地Sketch相比,增加了实时协作功能,即时设计可以看作是在线Sketch,两个工具可以简单粗暴地总结为一个公式: 即时设计Sketch云…...
通过多线程的方式每次发送10条MQ消息
背景:传入一个List<person>,不知道list中有多少条数据。 import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.client.producer.Message; import org.apache.rocketmq.client.producer.SendResult;import java.util.A…...
springboot上传文件后显示权限不足
前言: 最近一个老项目迁移,原本一直好好的,迁移后上传文件的功能使用不正常,显示文件没有可读取权限,这个项目并不是我们开发和配置的,由第三方开发的,我们只是接手一下。 前端通过api上传文件…...
spring-boot-maven-plugin插件 —— 打包时减小jar包的大小方法
Maven 在打包时会将所依赖的 jar 包全部打包进去,包含了所有的依赖和资源文件,就会导致打出来的包比较大。如果再上传服务器,那么耗时特别长。 由于依赖包变化小,占用空间大,而且大部分情况是添加一次后,就…...
java Bigdecimal
一、BigDecimal概述 BigDecimal是Java在java.math包中提供的线程安全的API类,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下&am…...
【C++11并发】thread 笔记
简介 进程和线程的区别 进程:一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。 线程:进程中的一个执行任务(…...
OBS Studio免费开源录屏工具
OBS是Open Broadcaster Software的缩写,是一款免费且开源的多平台录屏和直播软件。它可以用于录制屏幕、捕获游戏、创建教学视频、直播游戏等。OBS功能强大且灵活,提供了许多配置选项和自定义功能,使用户能够根据自己的需求进行设置和调整。它…...
【汇编】[bx+idata]的寻址方式、SI和DI寄存器
文章目录 前言一、[bxidata]寻址方式1.1 [bxidata]的含义1.2 示例代码 二、SI和DI寄存器2.1 SI和DI寄存器是什么?2.2 [bxsi]和[bxdi]方式寻址2.3 [bxsiidata]和[bxdiidata] 总结 前言 在汇编语言中,寻址方式是指指令如何定位内存中的数据。BX寄存器与偏…...
Java,集合框架,关于Map接口与Collections工具类
目录 Map接口 Map及其实现类的对比: HashMap中元素的特点: 相关方法: 添加、修改操作: 删除操作: 元素查询的操作: 元视图操作的方法: TreeMap的使用: Properties类: Collections工具…...
【实用技巧】更改ArduinoIDE默认库文件位置,解放系统盘,将Arduino15中的库文件移动到其他磁盘
本文主要介绍更改Arduino IDE (含2.0以上版本)默认库文件位置的方法。 原创文章,转载请注明出处: 【实用技巧】更改ArduinoIDE默认库文件位置,解放C盘,将Arduino15中的库文件移动到其他磁盘-CSDN博客文章浏…...
二、什么是寄存器
目录 一、STM32芯片架构简图及系统框图 1.1 STM32芯片架构简图 1.1.1 FLASH是什么,用来做什么 1.1.2 SRAM是什么,用来做什么 1.1.3 片上外设是什么,用来做什么 1.2 系统框图 1.2.1 驱动单元 1.2.2 被动单元 二、什么是寄存器 2.1 存…...
对比直接使用厂商api体验taotoken在延迟与可用性上的差异
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商 API 体验 Taotoken 在延迟与可用性上的差异 在构建依赖大模型能力的应用时,开发者通常会直接调用特定…...
Honey Select 2终极增强补丁:5分钟解锁完整汉化与去码功能
Honey Select 2终极增强补丁:5分钟解锁完整汉化与去码功能 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch是《Honey Select 2》游戏的…...
免费德州扑克GTO求解器终极指南:如何用Desktop Postflop提升你的扑克技术
免费德州扑克GTO求解器终极指南:如何用Desktop Postflop提升你的扑克技术 【免费下载链接】desktop-postflop [Development suspended] Advanced open-source Texas Holdem GTO solver with optimized performance 项目地址: https://gitcode.com/gh_mirrors/de/d…...
5个实战技巧:Unlock-Music浏览器端音乐解密技术深度解析
5个实战技巧:Unlock-Music浏览器端音乐解密技术深度解析 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: htt…...
AI 协同革命背后:多智能体系统的失控风险
子玥酱 (掘金 / 知乎 / CSDN / 简书 同名) 大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚…...
Keil A51汇编器INCDIR参数分隔符问题解析
1. 问题现象与背景解析 最近在使用Keil C51开发工具链中的A51汇编器时,遇到了一个看似简单却令人困惑的报错。当执行以下命令时: A51 ASAMPLE.A51 PRINT(ASAMPLE.LST) INCDIR(H1;H2)系统抛出了致命错误: A51 FATAL ERROR -LINE: C:…...
终极HsMod炉石传说模改插件:如何用开源技术重塑你的游戏体验
终极HsMod炉石传说模改插件:如何用开源技术重塑你的游戏体验 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 在炉石传说的世界里,每个玩家都渴望更流畅、更个性化的…...
深度解析ZXing.Net:.NET生态中的企业级条码识别与生成解决方案
深度解析ZXing.Net:.NET生态中的企业级条码识别与生成解决方案 【免费下载链接】ZXing.Net .Net port of the original java-based barcode reader and generator library zxing 项目地址: https://gitcode.com/gh_mirrors/zx/ZXing.Net ZXing.Net作为Java版…...
手写LoRA:从矩阵低秩分解到PyTorch参数化实现
1. 项目概述:为什么今天你必须真正搞懂 LoRA,而不是只看个热闹我带过三届校招算法工程师,也帮五家中小企业的技术团队落地过大模型应用。每次聊到模型微调,总有人一上来就问:“老师,我这台3090能不能跑Llam…...
英雄联盟智能助手Seraphine:如何用Python让游戏数据成为你的制胜法宝?
英雄联盟智能助手Seraphine:如何用Python让游戏数据成为你的制胜法宝? 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为排位赛中的信息不对称而苦恼吗?每次进入BP阶段…...
