Linux系列:从0到1用Docker部署springboot项目

news2025/2/26 1:52:03

目录

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.coloradmin.cn/o/862932.html

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

相关文章

2023年“云舟杯”视频孪生演讲大赛总决赛完美收官

8月4日&#xff0c;智汇云舟举办的2023年“云舟杯”视频孪生演讲大赛总决赛以直播形式完美收官。来自全国近200家合作伙伴代表齐聚线上&#xff0c;共同观摩比赛。在巅峰之战中&#xff0c;参赛学员们充分展示了各自对行业数字化转型的敏锐洞察、对智汇云舟视频孪生技术与产品的…

Fortinet数据中心防火墙及服务ROI超300%!Forrester TEI研究发布

近日&#xff0c;专注网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;联合全球知名分析机构Forrester发布总体经济影响独立分析报告&#xff0c;详细阐述了在企业数据中心部署 FortiGate 下一代防火墙&#xff08;NGFW&#xff09…

从黑马程序员电商视觉设计上半年就业数据,看当下数字产业人才需求热点

近期&#xff0c;老牌数字化人才培训机构传智教育旗下的高端IT教育品牌——黑马程序员发布了2023上半年电商视觉设计学科的就业数据&#xff0c;班级平均就业率92%&#xff0c;一线城市平均月薪9161元&#xff0c;所有毕业生平均月薪8969元。 电商视觉设计行业热度高&#xff0…

Git (2)

文章目录 1. 删除文件2. 分支管理2.1 理解分支2.2 分支创建 &#xff0c; 分支切换2.3 分支合并2.4 删除分支2.5 合并冲突2.6 合并模式2.7 分支策略2.8 bug 分支2.9 强制删除分支 3. 远程操作3.1 创建远程仓库3.2 克隆远程仓库3.3 推送3.4 拉取3.5 gitignore 文件3.6 配置别名 …

Android侧滑栏(一)可缩放可一起移动的侧滑栏

在实际的各类App开发中&#xff0c;经常会需要做一个左侧的侧滑栏&#xff0c;类似于QQ这种。 今天这篇文章总结下自己在开发中遇到的这类可以跟随移动且可以缩放的侧滑栏。 一、实现原理 使用 HorizontalScrollView 实现一个水平方向的可滑动的View&#xff0c;左布局为侧滑…

为c语言安装easyx图形库

按照图上的步骤&#xff0c;安装easyx图形库。 接下来看代码&#xff1a; #include<easyx.h> #include<stdio.h> #define width 800 #define height 600int main() {initgraph(width, height); // 初始化窗口&#xff08;宽度&#xff0c; 高度&#xff09;…

OpenHarmony社区运营报告(2023年7月)

本月快讯 • 2023年7月28日-29日&#xff0c;全球软件质量&效能大会&#xff08;简称“QECon”&#xff09;圆满举行&#xff0c;OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;以“优质高效测试助力OpenHarmony北向应用生态赋能”为主题&#xff0c;以…

Java项目作业~ 通过html+Servlet+MyBatis,完成站点信息的添加功能

需求&#xff1a; 通过htmlServletMyBatis&#xff0c;完成站点信息的添加功能。 以下是站点表的建表语句&#xff1a; CREATE TABLE websites (id int(11) NOT NULL AUTO_INCREMENT,name char(20) NOT NULL DEFAULT COMMENT 站点名称,url varchar(255) NOT NULL DEFAULT ,…

目标识别模型两种部署形态图

目标检测预训练模型基于新数据进行微调&#xff08;训练&#xff09;之后&#xff0c;得到一个权重文件。 在日常工业、车载等需求环境下&#xff0c;需要在嵌入式移动端的软件系统中调用该模型文件进行推断测试&#xff0c;软件系统追求性能经常使用C/C进行编码实现&#xff…

Apipost接口自动化中关联关系如何配置

在接口自动化测试中&#xff0c;接口之间可能存在依赖关系&#xff0c;即某些接口的执行需要先完成其他接口的执行。为了确保测试用例的正确执行&#xff0c;我们需要在配置测试用例时考虑接口之间的依赖关系。在编写测试用例时&#xff0c;需要明确每个接口的功能和输入输出参…

注册亚马逊买家账号需要什么资料

注册亚马逊买家账号通常需要以下基本资料&#xff1a; 1、邮箱&#xff1a;您需要一个有效的邮箱&#xff0c;用于注册账号和接收与账户相关的通知。 2、密码&#xff1a;选择一个安全的密码&#xff0c;以确保您的账号信息安全。 3、姓名&#xff1a;提供您的全名或常用的姓…

高忆管理:今年来尚未有公司递表,香港SPAC市场为何“熄火”?

香港SPAC上市准则敞开之后&#xff0c;从第一家公司上市到现在已经有1年多的时刻。&#xff08;【深度】王石、李宁、卫哲争相发起建立SPAC&#xff0c;香港版“上市盲盒”会火吗&#xff1f; 界面新闻了解到&#xff0c;今年以来&#xff0c;香港SPAC并没有新动态&#xff0c;…

Linux 文件查看命令

一、cat命令 1.cat文件名&#xff0c;查看文件内容&#xff1a; 例如&#xff0c;查看main.c文件的内容&#xff1a; 2.cat < 文件名&#xff0c;往文件中写入数据&#xff0c; Ctrld是结束输入 例如&#xff0c;向文件a.txt中写入数据&#xff1a; 查看刚刚写入a.txt的…

linux网络编程-libevent

libevent介绍 1 事件驱动, 高性能, 轻量级, 专注于网络 2 源代码精炼, 易读 3 跨平台 4 支持多种I/O多路复用技术, 如epoll select poll等 5 支持I/O和信号等事件 1.libevent的安装 登录官方网站: http://libevent.org, 查看相关信息 libevent源码下载主要分2个大版本&…

Linux中使用split切割文件,按行或者文件大小切割

环境中有5G大小的文件1千多万行&#xff0c;需要按行数切割&#xff0c;使用linux中的split工具可快速实现。 示例&#xff1a;测试文件造的是100万行&#xff0c;按行数切割&#xff1a; split -d -l 80000 test.txt qiege --additional-suffix.txt -d表示切割后的文件按照…

Dex文件混淆(一):BlackObfuscator

Dex文件混淆(一)&#xff1a;BlackObfuscator 首发地址:http://zhuoyue360.com/crack/105.html 文章目录 Dex文件混淆(一)&#xff1a;BlackObfuscator1. 前言2.小试牛刀3. 参考学习1. dex2jar源码简析2. BlackObfuscator简析1. 控制流平坦化1. 控制流平坦化基本介绍 2. Dex解析…

职场新星:Java面试干货让你笑傲求职路(三)

职场新星&#xff1a;Java面试干货让你笑傲求职路 1、token 为什么存放在 redis 中&#xff1f;2、索引的底层原理是什么&#xff1f;3、Spring IOC和AOP的原理4、接口和抽象类有什么共同点和区别&#xff1f;5、为什么要使用线程池&#xff1f;直接new个线程不好吗&#xff1f…

C语言函数详解(2)

目录 函数的声明和定义 函数声明 函数定义 函数递归 什么是递归 递归的两个必要条件 练习1 练习2 练习3 练习4 函数的声明和定义 函数声明 1. 告诉编译器有一个函数叫什么&#xff0c;参数是什么&#xff0c;返回类型是什么。但是具体是不是存在&#xff0c;函数声明决定…

一键部署 Umami 统计个人网站访问数据

谈到网站统计&#xff0c;大家第一时间想到的肯定是 Google Analytics。然而&#xff0c;我们都知道 Google Analytics 会收集所有用户的信息&#xff0c;对数据没有任何控制和隐私保护。 Google Analytics 收集的指标实在是太多了&#xff0c;有很多都是不必要的&#xff0c;…

我被一位美女程序员夸了!

见字如面&#xff0c;我是军哥&#xff01; 昨天晚上&#xff0c;一位美女程序员&#xff08;为什么说是美女&#xff0c;因为我有她的简历照片&#xff09;读者主动找我聊天&#xff0c;说之前买我的《技术人核心能力》课程终于看完了&#xff0c;受益匪浅&#xff0c;并且有些…