Linux系列:从0到1用Docker部署springboot项目
目录
1.前提条件
2.编写DockerFile镜像文件
3.打包SpringBoot项目
4.通过软件Xftp进行传输(*)
1.点击“文件-新建”编辑
5.操作远程主机
1.docker构建
2.容器运行
6.容器的关闭和删除
1.前提条件
Linux、docker、xftp的安装、一台可以访问的远程主机
2.编写DockerFile镜像文件
Dockerfile
是一个文本文件,包含了一系列的指令,用于定义如何构建 Docker 镜像。创建好 Dockerfile
后,可以使用命令来构建镜像,然后将这个镜像用于部署应用程序。
1.在项目的根目录下命名一个文件“DockerFile.txt”,写完后重命名为‘DockerFile’(这里最好命名成‘DockerFile’,因为 Docker 默认会寻找名为 Dockerfile
的文件来构建镜像。),用于定义镜像文件,例如我的:
# 使用一个基础镜像,这里使用 OpenJDK 11 作为基础镜像
FROM openjdk:11-jre-slim# 设置工作目录
WORKDIR /app# 复制可执行的 JAR 文件到镜像中
COPY ./springboot-web2-0.0.1-SNAPSHOT.jar .# 定义容器启动命令
CMD ["java", "-jar", "springboot-web2-0.0.1-SNAPSHOT.jar"]
以上根据自己的项目、具体目录作出调整修改,上面的工作目录是容器的目录,我写的‘/app’这个目录即使不存在,docker内也会进行自动创建,因此可以按自己需求进行命名
注意:COPY这行中一般是要用‘./’进行开头的,这表示相对路径(最好别用绝对路径,已踩坑!!)因为到时我们是在DockerFile文件所在目录下进行Docker的构建
3.打包SpringBoot项目
在确认项目没问题后,我们进行打包,点击Maven- LifeCycle-package进行打包,之后会生成一个target文件,里面就有我们需要的jar包:
注意:需要留意项目中配置的监听端口,后面会用到
4.通过软件Xftp进行传输(*)
这一步针对的是从本地Windows打包后,需要将jar包传输到对应的远程主机上时用到的,如果本地就是docker需要构建的地方,那么可以忽略这一步
传输步骤:
1.点击“文件-新建”
需要填写的有:名称、主机、用户名和密码(这边是用Password进行登录,也可用公钥)
其中名称是自定义,主机是对应的远程主机IP以及主机的用户名和密码(我这里用的是虚拟机作示例)
连接成功后,如图所示:
找到你要刚刚打包好的jar包,进行传输,直接进行拖拽即可:
5.操作远程主机
登录上远程主机,随后用docker指令进行构建部署
1.docker构建
在终端中,导航到项目根目录并执行以下命令来构建Docker镜像。将 my-spring-app
替换为你想要的镜像名称。
docker build -t my-spring-app .
出现上述运行结果,表示镜像名称为“my-spring-app”的容器构建成功
2.容器运行
构建完成后,使用以下命令来运行Docker容器。将 my-spring-container
替换为你想要的容器名称。
docker run -d --name my-spring-container -p 8080:8080 my-spring-app
上面我的镜像名称取名为“my-spring-app”,且我的SpringBoot项目的监听端口设置为了8082,所以我的指令是这样的:
让我解释一下每部分的含义:
-
-d
参数:这表示在“后台”运行容器,即在“守护进程”模式下。容器会在后台运行,不会占用当前终端。 -
-p 8080:8082
参数:这表示将主机的 8080 端口映射到容器的 8082 端口。第一个8080
是主机上的端口,第二个8082
是容器内的端口。这样你可以通过访问主机的http://localhost:8080
来访问容器内运行的应用程序。 -
my-spring-app
:这是容器的名称,通常由 Docker 自动生成。你可以使用这个名称来管理容器,如停止、删除等操作。 -
最后的输出
b421554123ebca89a45dca25096119b75df7a9dd3a73b6135bfc21b5ba061816
是容器的唯一标识符,通常称为容器ID。
注意;上述两个8080,其中
其中下面的一串字符是该容器的唯一标识符,通常称为容器ID 到此我们已经成功运行
检查一下用“docker ps”检查下docker中正在运行中的容器
可以看到,名称为“my-spring-app” 的容器已经运行,并将容器内部的 8082 端口映射到了主机的 8080 端口,ip的0.0.0.0是由于我在远程主机上部署的,外网访问还是需要通过该远程主机的ip,格式为“ip地址:端口号”即可
用其它的主机进行访问,运行成功
6.容器的关闭和删除
你也可以随时关闭容器:
docker stop <container_id>
关闭并删除容器:
docker rm -f <container_id>
这将停止并删除具有容器 ID 为 <container_id>
的容器。请注意,这会永久删除容器,并且容器内的数据可能会丢失,因此请谨慎使用 -f
参数。
如果你想要停止并删除所有的容器,可以使用以下命令:
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
相关文章:

Linux系列:从0到1用Docker部署springboot项目
目录 1.前提条件 2.编写DockerFile镜像文件 3.打包SpringBoot项目 4.通过软件Xftp进行传输(*) 1.点击“文件-新建”编辑 5.操作远程主机 1.docker构建 2.容器运行 6.容器的关闭和删除 1.前提条件 Linux、docker、xftp的安装、一台可以访问的远…...

zabbix监控mysql数据库、nginx、Tomcat
文章目录 一.zabbix监控mysql数据库1.环境规划2.zabbix-server安装部署(192.168.198.17)3.zabbix-mysql安装部署(192.168.198.15)3.1 部署 zabbix 客户端3.2 服务端验证 zabbix-agent2 的连通性(192.168.198.17&#x…...
深入探索二叉树算法:理解、构建和应用C语言
引言 二叉树是计算机科学中的一种重要数据结构,它在各种算法和应用中都扮演着重要角色。本篇博客将带您深入探索二叉树的世界,从基本概念到高级应用,逐步展开二叉树的奥秘,助您更好地理解、构建和应用二叉树算法。 什么是二叉树…...

(css)点击前隐藏icon图表 点击后显示
(css)点击前隐藏icon图表 点击后显示 效果 html <liv-for"(item,index) in sessionList":key"index"class"liClass":class"{ active: change2 index }"tabindex"2">...<el-tooltip class"item" effec…...

Tomcat的动静分离以及多实例部署
一、动静分离 Nginx实现负载均衡的原理: Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但不是把所有的web请求转发,而是将静态页面请求Ncinx服务器自己来处…...

uniapp+vue3项目中使用vant-weapp
创建项目 通过vue-cli命令行创建项目 Vue3/Vite版要求 node 版本^14.18.0 || >16.0.0 uni-app官网 (dcloud.net.cn) npx degit dcloudio/uni-preset-vue#vite my-vue3-project打开项目 点击顶部菜单栏终端/新建终端 执行安装依赖指令 yarn install 或 npm install 安装vant…...
WordPress:实现发布文章自动添加TAG标签
在给我们的WordPress博客更新文章时,大多数人应该会给文章添加一些TAG标签,文章添加TAG标签也是我们做WordPress优化必不可少的一项,但是如果每一篇文章的关键字标签都要手动添加链接,那也太麻烦了。今天给大家分享一篇自动给文章…...

ubuntu下FFmpeg安装和使用以及CMakeLists.txt模板
sudo apt install ffmpeg sudo apt-get install libavfilter-devcmakelist模板 CMakeLists.txt cmake_minimum_required(VERSION 3.16) project(ffmpeg_demo)# 设置ffmpeg依赖库及头文件所在目录,并存进指定变量 set(ffmpeg_libs_DIR /usr/lib/x86_64-linux-gnu) …...

数据结构顺序表和链表(超详细)
线性表: 线性表 ( linear list ) 是 n 个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串 ... 线性表在逻辑上是线性结构,也就…...
free 查看 buff/cache 很大,处理方法
如果 free 命令输出中的 buff/cache 很大,这意味着系统将一部分内存用于缓存文件系统的数据。这是正常的行为,因为缓存可以提高文件访问的速度。然而,如果需要释放缓存来腾出内存空间,可以尝试以下方法: 清理 PageCach…...

【Quarkus技术系列】「云原生架构体系」在云原生时代下的Java“拯救者”是Quarkus,那云原生是什么呢?
云原生时代下的Java"拯救者" 在云原生时代,其实Java程序是有很大的劣势的,以最流行的spring boot/spring cloud微服务框架为例,启动一个已经优化好,很多bean需要lazy load的application至少需要3-4秒时间,内…...
DHCP的工作原理
DHCP是一种网络管理协议,全称为动态主机配置协议(Dynamic Host Configuration Protocol)。它是一种基于TCP/IP协议的网络服务,允许网络管理员集中管理和分配IP地址和其他网络配置参数,以便客户端设备能够使用这些参数与…...
display:flex;兼容浏览器写法
通过在 display 属性中使用这些不同的值,可以确保在各种浏览器中都能正确显示 flex 布局。 需要注意的是,这只是一个示例,实际使用时可能还需要考虑其他兼容性问题,并根据具体情况进行调整。如果你需要更全面的兼容性解决方案&am…...
三、python Django ORM postgresql[数据定时备份、数据恢复]
一、数据定时备份 解释:备份指定数据库,能有效在发生错误时,预防错误,进行恢复 1.基本备份 #!/bin/bash sudo -u postgres pg_dump -U postgres -d dbname -Fc > /home/postgres/backup/backup.dump # sudo -u postgres&…...

c++字符串函数
在 C 中有大量用于操作 C-style 字符串的函数,它们集成在头文件 <cstring> 中。其常见的函 函数作用strcpy(s1,s2) 复制字符串 s2 到 s1strcat(s1,s2) 将字符串 s2 连接到 s1 末尾strlen(s) 计算字符串 s 长度strcmp(s1,s2) 比较字符串 s1 和 s2 …...
使用OkHttp发送POST请求的几种方式
使用OkHttp发送POST请求的几种方式 介绍pom依赖基本的POST请求带授权的POST请求POST方式发送JSON数据Multipart POST 请求 介绍 本文将介绍 OkHttp 客户端的基本用法。 主要介绍 OkHttp 3.x 版本中发送Post请求的几种方式。 pom依赖 <dependency><groupId>com.sq…...

时序预测 | MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比
时序预测 | MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-GRU、GRU集合经验模态分解结合门控循环单元时间序列预测对比效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 1.MATLAB实现EEMD-GRU、GRU时…...

学习笔记整理-JS-04-流程控制语句
文章目录 一、条件语句1. if语句的基本使用2. if else if多条件分支3. if语句算法题4. switch语句5. 三元运算符 二、循环语句1. for循环语句2. for循环算法题3. while循环语句4. break和continue5. do while语句 三、初识算法1. 什么是算法2. 累加器和累乘器3. 穷举法4. 综合算…...

stable-diffusion-webui 界面汉化
本教程通过安装 sd-webui-bilingual-localization 插件来达到汉化目的, 项目地址为:https://github.com/journey-ad/sd-webui-bilingual-localization 一、安装插件 先进入插件安装界面 在搜索栏搜索 zh_CN Localization 中文语言包, 项目地址: https://github.com/dtlnor/st…...

问道管理:信创概念走势活跃,恒银科技斩获四连板
信创概念9日盘中走势活泼,截至发稿,新晨科技、竞业达、恒银科技等涨停,宇信科技涨近10%,中孚信息涨近9%,华是科技、神州数码涨超7%。 新晨科技今天“20cm”涨停,公司昨日晚间公告,近来收到投标代…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...