Docker部署SpringBoot服务(Jar包映射部署)

news2025/1/12 6:10:09

介绍

项目在docker部署运行以后,每次需更新jar包时,都得重新制作镜像,再重新制作容器。流程及其繁琐,效率极低。
以下步骤是在不更新镜像和容器的前提下,直接更新jar完成项目更新的操作。

不重新制作镜像部署

1. 创建你存放项目的文件夹

我的文件目录是 /home/application/framework 分别在里面创建两个子文件夹 data : 存放项目jar包 , Dockerfile, start.sh ; tmp : 存放临时文件

在这里插入图片描述

2. 创建Dockerfile文件

# Docker image for springboot file run
# 基础镜像使用java
FROM openjdk:8-jdk
# 作者
MAINTAINER Mr.Gao

# VOLUME 指定了临时文件目录为/tmp。
VOLUME /tmp

#设置工作目录 此后RUN、CMD、ENTRYPOINT、COPY、ADD等命令都在此目录下作为当前工作目录
WORKDIR /data

#执行data下的 start.sh
CMD ["sh","-c","/data/start.sh"]

3. 创建 start.sh

#启动jar包 *** 表示你要运行的jar我的是 sky-server-1.0-SNAPSHOT.jar
java -jar /data/***.jar 

在 start.sh文件夹下执行 chmod +x start.sh命令

在这里插入图片描述

4. 制作镜像

#sky 是镜像的名称可以根据自己的项目进行修改
docker build -t sky .

在这里插入图片描述

#查看容器镜像
docker images

在这里插入图片描述

5. 制作容器

docker run -d --name sky-api  -it -v /home/application/framework/tmp:/tmp  -v /home/application/framework/data:/data    -p 8089:8080  sky
参数介绍
	< -d 后台运行
	< -mane 容器名称
	< -p 指定端口映射 格式为: 主机port:容器port
	< -it 运行一个交互式的容器,并分配一个伪终端
	< -v 绑定一个卷
	< --restart=always 自启动
	<  最后面的sky 是你制作的镜像名

在这里插入图片描述

docker ps -a #查询容器是否启动

 docker logs --tail 300 -f sky-api #查询容器的日志   sky-api 是你的容器名

在这里插入图片描述

6. 验证

我的验证方式是部署的jar和替换后的jar去除了一个接口
现在的接口是3个
在这里插入图片描述

#替换jar需要先停止docker容器
docker stop sky-api 

在这里插入图片描述
上传要替换的jar包到你的项目的路径 我的是 /home/application/framework/data

上传完以后启动容器

docker start sky-api

启动以后再次验证
在这里插入图片描述

替换成功,三个接口变成两个了

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

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

相关文章

Python简化远程部署和系统管理的工具库之fabric使用详解

概要 Python Fabric库是一个用于简化远程部署和系统管理的工具库。它提供了一组简洁而强大的函数和工具,可以帮助开发者轻松地在多台远程主机上执行命令、上传文件、下载文件等操作,从而实现自动化部署和管理。 安装 要使用Python Fabric库,首先需要安装Fabric模块。可以通…

OpenHarmony实战开发-如何使用text组件的enableDataDetector属性实现文本特殊文字识别。

介绍 本示例介绍使用text组件的enableDataDetector属性实现文本特殊文字识别。 效果图预览 使用说明 1.进入页面&#xff0c;输入带有特殊文字的信息并发送&#xff0c;对话列表中文本会自动识别并标识特殊文字。目前支持识别的类型包括电话号码、链接、邮箱和地址&#xff…

Zynq7000系列中PL时钟使用

可编程逻辑&#xff08;PL&#xff09;具有自己的时钟管理生成和分配功能&#xff0c;并从处理器系统&#xff08;PS&#xff09;中的时钟发生器接收四个时钟信号&#xff08;如图25-10所示&#xff09;。 在嵌入式系统中&#xff0c;PL时钟的管理和分配对于确保逻辑电路的正确…

协程的意义(二)

1.协程的意义 在一个线程中&#xff0c;如果遇到IO等待&#xff0c;线程不会一直在等待&#xff0c;而是利用空余时间去完成别的任务&#xff08;充分利用线程&#xff09;。 示例&#xff1a;下载图片 ①普通的方式下载图片&#xff08;同步方式&#xff09; ②使用协程的方…

发泡机液压站比例阀放大器

发泡机液压站是提供动力和压力以驱动发泡机工作的系统。 发泡机是一种用于制备聚氨酯发泡材料的设备&#xff0c;而液压站则扮演着为发泡机提供必要动力的角色。具体来看&#xff0c;液压站的主要组成包括&#xff1a; 液压油箱&#xff1a;存储液压油&#xff0c;为系统提供液…

【Applied Algebra】隐藏子群问题和Shor算法的新视角

隐藏子群问题和Shor算法的新视角 隐藏子群问题是指给定一个群和一个函数,该函数对于群的一个子群是常数,并且对于子群的任何两个不同的左陪集有不同的值,问题是找到这个子群.HSP是许多量子算法的基础,其中最著名的是Shor的算法,它可以用来分解大整数和计算离散对数,这直接威胁到…

小目标检测——鸟类数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

nvidia-smi CUDA Version:N/A

问题 nvidia-smi显示&#xff1a;CUDA Version:N/A nvidia-smi -a显示&#xff1a;CUDA Version: Not Found 解决方法 查看Nvidia驱动版本 nvidia-smi如下图&#xff0c;版本为530.41.03 搜索cuda库 apt search libcuda注&#xff1a;不同的源&#xff0c;同一个库的命…

轻量级SQLite可视化工具Sqliteviz

什么是 Sqliteviz &#xff1f; Sqliteviz 是一个单页面离线优先的渐进式网络应用&#xff08;PWA&#xff09;&#xff0c;用于完全客户端的 SQLite 数据库或 CSV 文件的可视化。 所谓完全客户端&#xff0c;就是您的数据库永远不会离开您的计算机。使用 sqliteviz&#xff0c…

PyQt程序:实现新版本的自动更新检测及下载(FTP服务器实现)

一、实现逻辑 本实例采用相对简单的逻辑实现,用户在客户端使用软件时点击“检测升级”按钮,连接至FTP服务器检索是否有新版本的.exe,如果有,下载最新的.exe安装升级。 本实例服务端待下载.exe所在目录结构 本实例客户端待更新.exe所在目录结构 二、搭建服务器 可以参考…

IMUGNSS的误差状态卡尔曼滤波器(ESKF)的数学模型

IMU&GNSS的误差状态卡尔曼滤波器&#xff08;ESKF&#xff09;的数学模型 把IMU视为运动模型&#xff0c;把GNSS观测视为观测模型&#xff0c;推导整个滤波器 设状态变量为 x [ p , v , R , b g , b a , g ] T x[p,v,R,b_{g},b_{a},g]^{T} x[p,v,R,bg​,ba​,g]T 所有变…

泛型的初步认识(2)

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x…

【深度学习实战(11)】搭建自己的dataset和dataloader

一、dataset和dataloader要点说明 在我们搭建自己的网络时&#xff0c;往往需要定义自己的dataset和dataloader&#xff0c;将图像和标签数据送入模型。 &#xff08;1&#xff09;在我们定义dataset时&#xff0c;需要继承torch.utils.data.dataset&#xff0c;再重写三个方法…

LeetCode in Python 55. Jump Game (跳跃游戏)

跳跃游戏的游戏规则比较简单&#xff0c;若单纯枚举所有的跳法以判断是否能到达最后一个下标需要的时间复杂度为O()&#xff0c;为此&#xff0c;本文采用贪心策略&#xff0c;从最后一个下标开始逆着向前走&#xff0c;若能跳到第一个元素则表明可以完成跳跃游戏&#xff0c;反…

Python基础学习之数据切片

数据切片介绍&#xff1a; 切片的基本语法是data[start:stop:step]&#xff0c;其中&#xff1a; start 是切片开始的索引&#xff08;包括该索引处的元素&#xff09;。 stop 是切片结束的索引&#xff08;不包括该索引处的元素&#xff09;。 step 是切片的步长&#xff0…

Go小技巧易错点100例(十五)

本期看点&#xff1a; 正文开始&#xff1a; Go程序跟踪函数的执行时间 在Go程序中我们经常会对接口执行的耗时做一个记录&#xff0c;特别是针对核心或复杂业务的时候&#xff0c;我们需要关注该业务的执行耗时&#xff0c;可以具体到某个方法&#xff0c;有一个简单有效的技…

Linux:常用软件、工具和周边知识介绍

上次也是结束了权限相关的知识&#xff1a;Linux&#xff1a;权限相关知识详解 文章目录 1.yum-管理软件包的工具1.1基本介绍1.2yum的使用1.3yum的周边生态1.4软件包介绍 2.vim-多模式的文本编辑器2.1基本介绍2.2基本模式介绍2.2.1命令模式&#xff08;Normal mode&#xff09;…

Python数据可视化库—Bokeh与Altair指南

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在数据科学和数据分析领域&#xff0c;数据可视化是一种强大的工具&#xff0c;可以帮助我们…

循序渐进丨使用 Python 向 MogDB 数据库批量操作数据的方法

当我们有时候需要向数据库里批量插入数据&#xff0c;或者批量导出数据时&#xff0c;除了使用传统的gsql copy命令&#xff0c;也可以通过Python的驱动psycopg2进行批量操作。本文介绍了使用psycopg2里的executemany、copy_from、copy_to、copy_expert等方式来批量操作 MogDB …

Darknet框架优化介绍

一、DarkNet框架简介 1.DarkNet的简介 Darknet是一个完全使用C语言编写的人工智能框架&#xff0c;可以使用CUDA的开源框架。主要应用于图像识别领域。 它具有可移植性好&#xff0c;安装间接&#xff0c;查看源码方便等优势&#xff0c;提供了OpenCV等附加选项&#xff0c;还…