容器化spring boot应用程序

容器化spring boot应用程序有多种方式,如基于简单的Dockerfile,多阶段Dockerfile以及基于Docker Compose等,我们将逐步给大家介绍,本节主要介绍基于简单的Dockerfile进行容器化spring boot的应用程序。

创建Spring boot应用程序

创建一个简单的spring boot应用程序,有多种方式,如基于Spring Initializr、基于Maven或者Gradle等多种方式,大家可以根据自己的偏好进行创建,我们以Maven为例,需要添加以下依赖项:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

其中插件spring-boot-maven-plugin用于打包spring boot的jar包,必须要添加该插件,否则会导致最终的jar包不能执行。

添加端点

添加一个测试端点,用于部署后的测试,如下所示:

@RestController
@RequestMapping(value = "test")
public class TestController {@GetMapping(value = "test")public String test() {return "test";}
}

添加Dockerfile文件

Dockerfile需要添加到项目的根目录下,且名字必须是Dockerfile,注意没有后缀名。Dockerfile的内容如下所示:

FROM openjdk:17-jdk-alpine
MAINTAINER author
RUN mkdir service
WORKDIR service
COPY JwtDemo-1.0-SNAPSHOT.jar application.jar
ENTRYPOINT ["java","-jar","application.jar"]

如上代码所示,

第一行使用的是jdk 17的镜像

第二行是一个维护者的信息,不建议太多;

第三行run 主要是在容器内创建文件夹service

第四行workdir 用于将工作目录设置为上一步创建的service文件夹

第五行copy 用于将程序的jar包拷贝到容器内部,基于第四行,复制到了容器内部的service文件夹中

第六行是启动jar包的命令,用于容器启动后,运行应用程序

构建镜像

我是基于linux的centos系统进行镜像的构造和容器的运行的,因此,需要将打包后的jar包即JwtDemo-*.jar上传到linux系统中,同时也需要将Dockerfile同样复制到linux上与jar包在一个目录下,如下图所示:

构建镜像的命令如下:

docker build -t jwt:v1 .

以上命令用于构建镜像jwt,其中v1是新镜像的版本号,如果没有v1,则默认为latest;此外需要注意的是,在这个命令行的末尾有一个点,用于加载当前目录的Dockerfile文件,这也是为什么创建Dockerfile时使用该名称的原因,当然也可以使用其他文件名,但需要使用其他参数进行指定。

创建后的镜像如下

启动容器 

运行如下命令,启动该容器

docker container run -d -p 3000:8080 --name jwt jwt:v1

如上图,通过docker container run命令,启动另一个容器,名称为jwt,并将容器内部应用程序的端口8080映射到了宿主机的3000的端口上,执行以上命令之后,可以执行如下命令调用test的端点

如上所示,通过调用宿主机的3000端口,可以发现能够正常使用

至此,我们完成了spring boot应用程序的容器化工作,如果后续我们的程序发生了变化,则可以通过上述的步骤,重新构建镜像,删除已有的容器,并创建新的容器便可以了。

希望以上文章对您有所帮助,后续将给大家介绍如何通过idea直接连接到远程的docker上以及如何基于Docker Compose进行应用的容器化。

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

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

相关文章

未来科技中的RTK接收机应用探索

RTK实时差分定位技术&#xff08;RTK&#xff0c;Real-Time Kinematic&#xff09;&#xff0c;作为高精度定位技术的一种重要手段&#xff0c;已经在地理测绘、测量工程、航空航天等领域取得了广泛应用。随着科技的不断发展&#xff0c;RTK导航接收机的应用领域也日益拓宽。首…

AI大模型日报#0628:谷歌开源9B 27B版Gemma2、AI首次实时生成视频、讯飞星火4.0发布

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE-4.0-8K-latest&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff01;《AI大模型日报》今日要点&#xf…

合并排序的数组

题目链接 合并排序的数组 题目描述 注意点 A的末端有足够的缓冲空间容纳BA和B都是排序的 解答思路 最初想到的是双指针&#xff0c;从小到大找到合并B时应该A相应位置应该插入的元素&#xff0c;因为在插入的过程中B的元素会替换A原有位置的元素&#xff0c;所以需要先将A…

营销翻车,杜国楹出面道歉,小罐茶的“大师作”故事仓皇结尾

“小罐茶&#xff0c;大师作”&#xff0c;这句slogan曾一度在央视平台长时间、高密度播放&#xff0c;成为家喻户晓的广告词&#xff0c;也打响了小罐茶品牌的名号。但同时&#xff0c;市场上关于“大师作”真实性的质疑也从未停息。 就在6月25日小罐茶十二周年发布会上&#…

Jenkins容器的部署

本文主要是记录如何在Centos7上安装docker,以及在docker里面配置tomcat、mysql、jenkins等环境。 一、安装docker 1.1 准备工作 centos7、VMware17Pro 1.2 通过yum在线安装dokcer yum -y install docker1.3 启动docker服务 systemctl start docker.service1.4 查看docke…

JavaSE期末复习速成笔记

面向对象 1. 面向对象的概念 面向对象编程&#xff08;OOP&#xff09;是一种编程范式&#xff0c;它将现实世界的事物抽象为对象&#xff0c;通过类和对象来创建各种功能模块&#xff0c;以此来设计和开发软件。 2. 类与对象 类&#xff1a;是对象的模板&#xff0c;定义了…

自动化巡检革命:旗晟双圆管轨道机器人的创新应用

在输煤皮带线和矿山带式输送机的巡检过程中&#xff0c;面临着高湿度、多粉尘、温湿度极端、噪音干扰&#xff1b;设备磨损频繁&#xff0c;难以及时发现问题&#xff1b;传统的人工巡检方式存在劳动强度大、效率低、检测质量不稳定、数据采集和分析滞后&#xff0c;无法实现实…

oracle 11g rac创建实例时发现只给一节点创建了实例 二节点没创建的处理方法

由于操作失误没有在二节点创建实例 删除数据库重新dbca建库 [oracleracdg1-1 dbs]$ dbca -silent -deleteDatabase -sourceDB rac11dg1 -sysDBAUserName sys -sysDBAPassword oracle_4U Connecting to database 4% complete 9% complete 14% complete 19% complete 23% …

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 两个字符串间的最短路径(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

npm创建一个空的vue3项目的方法或者pnpm创建vue3项目

1、前提我们已经安装了npm&#xff0c;或者pnpm 2、我们用npm来创建vue3项目 快速上手 | Vue.js 官网地址 这里我安装是的 node v18.20.3 以下是安装过程 &#xff1a; npm create vuelatest 根据自己的需要进行创建即可。 3、我们用pnpm来创建vite vue3项目 pnpm create …

Android 界面库 (二) 之 Data binding 详细介绍

1. 简介 回顾我们在前面文章《Android 界面库 (一) 之 View binding 简单使用》中学习的 View Binding&#xff0c;它旨在简化 View 与代码之间的绑定过程。它会在编译时期为每个 XML 布局文件生成相应的绑定类(Binding class)&#xff0c;该类里包含了布局文件每个有 ID 的 Vi…

【深度学习】服务器炼丹代码配置、Python使用指定gpu显卡运行代码

【显卡】服务器炼丹代码配置 写在最前面一、查看哪几块显卡能用二、使用指定gpu运行代码1、指定使用GPU0运行脚本&#xff08;默认是第一张显卡, 0代表第一张显卡的id,其他的以此类推&#xff09;2、指定使用多张显卡运行脚本 三、如何使用1、单块显卡使用2、多GPU训练使用Data…

昇思25天学习打卡营第3天|数据集全攻略:加载、操作与自定义

导入数据集相关库和类 首先&#xff0c;导入了 NumPy 库&#xff0c;并将其简称为 np 。要知道&#xff0c;NumPy 乃是用于科学计算的关键库&#xff0c;作用非凡。接着&#xff0c;从 mindspore.dataset 当中导入了 vision 模块。此外&#xff0c;还从 mindspore.dataset 里引…

小阿轩yx-Nginx 网站服务

小阿轩yx-Nginx 网站服务 由俄罗斯的 lgor Sysoev 开发其稳定、高效的特性逐渐被越来越多的用户认可 Nginx 服务基础 Nginx (发音为[engine x])专为性能优化而开发 最知名的优点 稳定性低系统资源消耗以及对 HTTP 并发连接的高处理能力(单台物理服务器可支持 30000~50000个…

抗击.michevol勒索病毒:保障数据安全的新策略

导言&#xff1a; 在今天高度互联的数字化环境中&#xff0c;数据安全面临着越来越复杂和普遍的威胁&#xff0c;勒索病毒如.michevol已成为了用户和企业普遍面临的风险。本文91数据恢复将探讨.michevol勒索病毒的特点、感染方式以及创新的防御策略&#xff0c;旨在帮助读者更…

车载双向认证框架设计

最近工作需要&#xff0c;手写了一个双向认证库&#xff0c;可以用在Java、Android上&#xff0c;不限于PC/手机、车载平台。首先我们来看看双向认证的原理机框架设计思路&#xff0c;最后会给出下载链接大家可以体验或者源码参考。 因为可以和FlexNet网络库&#xff08;参考我…

mac安装navicate

1.下载好之后点击安装包安装 2.一般情况下会提示安全性什么的,点击允许即可,然后会出现如下界面,点击安装即可. 3.点击打开 4.然后出现如下界面,点击Enter 5.将安装包拖入即可. 6.等待安装即可 7.安装完成后会在启动台看到Navicat16 的图标 8.然后打开软件界面如下:

访问外网的安全保障——反向沙箱

反向沙箱作为一种网络安全技术&#xff0c;其核心理念在于通过构建一个隔离且受控的环境&#xff0c;来有效阻止潜在的网络威胁对真实系统的影响。在当今日益复杂的网络环境中&#xff0c;如何借助反向沙箱实现安全上网&#xff0c;已成为众多用户关注的焦点。 随着信息化的发…

树莓派Pico

树莓派Pico是树莓派基金会推出的一款基于RP2040微控制器的微型计算机板&#xff0c;它是专为需要高性能微控制器的应用场景设计的&#xff0c;特别适合于需要实时控制、低功耗和小型化解决方案的项目。以下是树莓派Pico的详细介绍&#xff1a; ### 核心特点&#xff1a; - **基…

统信系统实战(2):安装redis

在系统中未发现redis,需要安装。 网上资料上说需要去redis官网下载,但是发现不管是github账号还是自己注册的sso账号,都各种提示有问题。 继续找资料,发现可以直接通过下载链接下载,指令如下: wget http://download.redis.io/releases/redis-6.0.6.tar.gz 成功下载,…