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,所以我的指令是这样的:

让我解释一下每部分的含义:

  1. -d 参数:这表示在“后台”运行容器,即在“守护进程”模式下。容器会在后台运行,不会占用当前终端。

  2. -p 8080:8082 参数:这表示将主机的 8080 端口映射到容器的 8082 端口。第一个 8080 是主机上的端口,第二个 8082 是容器内的端口。这样你可以通过访问主机的 http://localhost:8080 来访问容器内运行的应用程序。

  3. my-spring-app:这是容器的名称,通常由 Docker 自动生成。你可以使用这个名称来管理容器,如停止、删除等操作。

  4. 最后的输出 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)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GIL 锁或将在 CPython 中成为可选项

哈喽大家好&#xff0c;我是咸鱼 几天前有媒体报道称&#xff0c;经过多次辩论&#xff0c;Python 指导委员会打算批准通过 PEP 703 提案&#xff0c;让 GIL&#xff08;全局解释器&#xff09;锁在 CPython 中成为一个可选项 PEP 703 提案主要目标是使 GIL 变成可选项&#…

flink如何监听kafka主题配置变更

背景&#xff1a; 从前一篇文章我们知道flink消费kafka主题时是采用的手动assign指定分区的方式&#xff0c;这种消费方式是不处理主题的rebalance操作的&#xff0c;也就是消费者组中即使有消费者退出或者进入也是不会触发消费者所消费的分区的&#xff0c;那么疑问就来了&am…

【CSS】背景图定位问题适配不同机型

需求 如图, 实现一个带有飘带的渐变背景 其中头像必须显示飘带凹下去那里 , 需要适配不同的机型, 一不下心容易错位 实现 因为飘带背景是版本迭代中更新的, 所以飘带和渐变背景实则两个div 飘带切图如下 , 圆形部分需要契合头像 <view class"box-bg"><…

【脚踢数据结构】链表(1)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言,Linux基础,ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的一句鸡汤&#x1f914;&…

电脑麦克风没声音?

这3招就可以解决&#xff01; 在我们使用电脑录制视频时&#xff0c;有时会遇到一个令人头疼的问题&#xff1a;麦克风没有声音。那么&#xff0c;为什么会出现这种情况呢&#xff1f;更重要的是&#xff0c;我们应该如何解决这个问题呢&#xff1f;本文将介绍3种方法&#xf…

uniapp 使用canvas画海报(微信小程序)

效果展示&#xff1a; 项目要求&#xff1a;点击分享绘制海报&#xff0c;并实现分享到好友&#xff0c;朋友圈&#xff0c;并保存 先实现绘制海报 <view class"data_item" v-for"(item,index) in dataList" :key"index"click"goDet…

利用ChatGPT绘制思维导图——以新能源汽车竞品分析报告为例

随着人们对环境保护的日益关注和传统燃油汽车的限制&#xff0c;全球范围内对新能源汽车的需求不断增长。新能源汽车市场的激烈竞争使得了解各个竞品的特点和优劣成为关键。然而&#xff0c;针对这一领域的详尽竞品分析却常常需要大量时间和精力。 在此背景下&#xff0c;人工智…

【C++】开源:事件驱动网络库libevent配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍事件驱动库libevent配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xf…

Flink多流处理之coGroup(协同分组)

这篇文章主要介绍协同分组coGroup的使用,先讲解API代码模板,后面会结图解介绍coGroup是如何将流中数据进行分组的. 1 API介绍 数据源# 左流数据 ➜ ~ nc -lk 6666 101,Tom 102,小明 103,小黑 104,张强 105,Ken 106,GG小日子 107,小花 108,赵宣艺 109,明亮# 右流数据 ➜ ~ n…

【项目学习1】如何将java对象转化为XML字符串

如何将java对象转化为XML字符串 将java对象转化为XML字符串&#xff0c;可以使用Java的XML操作库JAXB&#xff0c;具体操作步骤如下&#xff1a; 主要分为以下几步&#xff1a; 1、创建JAXBContext对象&#xff0c;用于映射Java类和XML。 JAXBContext jaxbContext JAXBConte…

finfet grid

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 90nm 及以下的工艺都要求储存器&#xff0c;IP&#xff0c;IO 的多晶硅方向必须和标准单元的多晶 硅方向保持一致&#xff0c;无法像过去工艺一样随意旋转方向。在 22nm 及以下…

机器学习可解释性

机器学习可解释性 可解释性重要性可解释性事前与事后可解释模型线性回归可解释性example权重显著性判断 逻辑回归可解释Example 可解释性重要性 机器学习模型在表现良好时&#xff0c;我们不能简单地信任其预测结果而忽略其决策原因。单一指标如分类准确率对现实世界任务来说是…

PyTorch深度学习实战(10)——过拟合及其解决方法

PyTorch深度学习实战&#xff08;10&#xff09;——过拟合及其解决方法 0. 前言1. 过拟合基本概念2. 添加 Dropout 解决过拟合3. 使用正则化解决过拟合3.1 L1 正则化3.2 L2 正则化 4. 学习率衰减小结系列链接 0. 前言 过拟合 (Overfitting) 是指在机器学习中&#xff0c;模型…

2023年第2季社区Task挑战赛升级新玩法,等你来战!

第1季都有哪些有趣的作品&#xff1f; 在大家的共建下&#xff0c;FISCO BCOS开源生态不断丰富完善&#xff0c;涌现了众多实用技术教程和代码&#xff1a;基于数字身份凭证的业务逻辑设计&#xff0c;贡献了发放数字身份凭证的参考实现&#xff1b;提供企业碳排放、慈善公益等…

【idea】点击idea启动没反应

RT 点击idea启动的时候没反应&#xff0c;接着百度报错&#xff0c;基本跟他们的也不一样。 首先我是做版本升级。其次&#xff0c;我之前是破解的。如果你也是跟我一样的话&#xff0c;那问题可能就处在破解上了 解决方式 首先&#xff0c;是跟大部分解决思路一样。先找到项…

苍穹外卖系统07

哈喽&#xff01;大家好&#xff0c;我是旷世奇才李先生 文章持续更新&#xff0c;可以微信搜索【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】更有我为大家准备的福利哟&#xff0c;回复【项目】获取我为大家准备的项目 最近打算把我手里之前做的项目分享给大家&#…

年至年的选择仿elementui的样式

组件&#xff1a;<!--* Author: liuyu liuyuxizhengtech.com* Date: 2023-02-01 16:57:27* LastEditors: wangping wangpingxizhengtech.com* LastEditTime: 2023-06-30 17:25:14* Description: 时间选择年 - 年 --> <template><div class"yearPicker"…

CTFSHOW php命令执行

目录 web29 过滤flag web30 过滤system php web31 过滤 cat|sort|shell|\. 这里有一个新姿势 可以学习一下 web32 过滤 &#xff1b; . web33 web34 web35 web36 web37 data伪协议 web38 短开表达式 web39 web40 __FILE__命令的扩展 web41 web42 重定向…

【无标题杭州生物制药公司【阿诺医药】申请纳斯达克IPO上市】

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;杭州生物制药公司阿诺医药&#xff08;Adlai Nortye&#xff09;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为&am…

7个顶级开源数据集来训练自然语言处理(NLP)和文本模型

推荐&#xff1a;使用 NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 NLP现在是一个令人兴奋的领域&#xff0c;特别是在像AutoNLP这样的用例中&#xff0c;但很难掌握。开始使用NLP的主要问题是缺乏适当的指导和该领域的过度广度。很容易迷失在各种论文和代码中&#xff…