基于 Spring Boot 项目实现 Docker 容器化部署

发布于:2024-10-24 编辑:匿名 来源:网络

将 Spring Boot 项目部署到 Docker 容器中主要包括以下几个步骤: 准备 Docker 镜像。首先,您需要选择一个基础镜像,通常是包含 Java 运行环境的镜像,例如 OpenJDK 。

这些镜像可以从 Docker Hub 或其他镜像存储库获取。接下来,您需要在基础映像上构建包含 Spring Boot 应用程序的映像。

这包括将应用程序的 JAR 文件、依赖项和配置文件添加到映像中。编写 Dockerfile Dockerfile 是一个文本文件,其中包含构建 Docker 映像的指令。

需要编写一个 Dockerfile 来指定如何构建包含 Spring Boot 应用程序的镜像。在Dockerfile中,您可以使用“COPY”指令将本地文件(包括Spring Boot应用程序的JAR文件和配置文件)复制到镜像中。

使用“RUN”指令在容器内运行命令,例如安装依赖项或执行应用程序的构建。使用“CMD”或“ENTRYPOINT”指令指定容器启动时要运行的命令,通常是启动 Spring Boot 应用程序的命令。

构建 Docker 镜像 使用 docker build 命令基于 Dockerfile 构建 Docker 镜像。例如:`docker build -t my-spring-boot-app .`,其中`-t`选项用于指定镜像的名称和标签。

运行 Docker 容器 使用“docker run”命令来运行 Docker 映像。例如:`docker run -p :my-spring-boot-app`,其中`-p`选项用于将主机的端口映射到容器的端口,以便外部可以访问应用程序。

还有其他选项可用于配置容器,例如挂载卷、设置环境变量等。 访问应用程序容器运行后,您可以通过访问主机的端口(在上面的例子)。

Spring Boot项目的Docker容器化部署的原理是将应用程序及其依赖项打包成Docker镜像,然后在容器中运行该镜像。这使得应用程序在不同环境中更加可移植和隔离,同时也便于部署和扩展。

使用Docker可以大大简化应用程序部署过程,并提供更好的资源管理和隔离,以及更高的可扩展性。闲聊够了,进入技术吧! ! !方法一:直接构建jar包并运行镜像。

将程序打包上传到服务器指定目录。例如:/home/www/spring-boot-image/spring-boot-docker-1.0.jar。

在此目录中创建 Dockerfile 文件。代码语言:javascript Copy FROM openjdk:8uMAINTAINER zhangtADD spring-boot-docker-1.0.jar zhangt.jarEXPOSE ENTRYPOINT ["java","-jar","zhangt.jar"]Dockerfile 内容解释: FROM openjdk:8u 这行指定了基础映像,该映像是根据“openjdk:8u”映像构建的。

它使用 OpenJDK 8 版本号图像作为基础。这是包含 Java 运行时环境的基础映像。

MAINTAINER zhangt 这行设置维护者信息,尽管在较新版本的 Docker 中,不再推荐使用 `MAINTAINER`,而可以使用 `LABEL` 添加类似的元数据信息。 ADD spring-boot-docker-1.0.jar zhangt.jar 行使用“ADD”指令将本地“spring-boot-docker-1.0.jar”文件复制到镜像中,并将其重命名为“zhangt.jar”。

该 JAR 文件包含 Spring Boot 应用程序的可执行代码。 EXPOSE 此行使用“EXPOSE”指令来声明容器将侦听的端口号(在此处指定)。

请注意,这只是一个元数据声明,它不会自动将端口映射到主机。 ENTRYPOINT ["java", "-jar", "zhangt.jar"] 行设置容器启动时要执行的命令。

在这种情况下,容器将使用 java -jar zhangt.jar 命令启动,该命令将运行 Spring Boot 应用程序。 `java` 命令启动 Java 虚拟机 (JVM) 并执行 `zhangt.jar` 中的可执行代码。

此 Dockerfile 的目的是构建一个包含基于 OpenJDK 8u 映像的 Spring Boot 应用程序的 Docker 映像。构建完成后,该映像可用于运行 Spring Boot 应用程序的容器。

容器将侦听该端口,并且可以通过适当的端口映射从外部访问应用程序。创建完Dockerfile文件后,执行构建镜像代码语言的命令:javascript copy docker build -t zhangt。

请注意最后一个 .表示Dockerfile在当前文件目录下。 zhangt 代表构建的图像。

构建成功后,可以使用docker images命令查看镜像。 -t 选项用于指定图像的名称和标签。

您可以将 zhangt 替换为您想要的名称和标签。镜像构建成功后,就可以运行容器代码语言了: javascript copy docker run -d --restart=always --name zhangt -p :zhangt 各个参数的含义: docker run: 用于启动Docker容器的命令。

-d:这是在后台运行容器的选项(守护进程模式)。容器将在后台运行,不会占用终端。

--restart=always:这是另一个选项,意味着容器将始终在退出时重新启动。即使由于错误或其他原因而停止,Docker 也会尝试自动重新启动容器。

--name zhangt:该选项用于指定容器的名称。容器的名称设置为“zhangt”。

-p :: 这是用于将主机端口映射到容器端口的选项。此选项将主机的端口映射到容器的端口。

这样,外界就可以通过访问主机的端口来访问容器内部运行的应用程序。 zhangt:这是容器的名称或镜像名称,表示要运行的容器是基于名为“zhangt”的Docker镜像创建的。

如果“zhangt”是镜像名称,Docker 将查找该镜像并在容器中运行它。该命令的目的是在后台运行一个 Docker 容器,该容器是使用“zhangt”镜像创建的,并将主机的端口映射到容器的端口。

容器的名称设置为“zhangt-p”,如果容器在任何情况下退出,Docker都会自动重新启动它。这通常用于部署应用程序,以确保应用程序在发生意外情况时能够自动恢复。

启动容器后,可以使用 docker ps 命令查看启动的容器 docker log -f --tail 容器id 查看服务日志。如果要更新jar包,只需要使用 docker cp spring-boot-docker-1.0.jar 容器ID:/zhangt.jar,即可将 spring-boot-docker-1.0.jar 复制到容器中并重命名它,然后 docker restart 容器 ID 重新启动容器。

方法二:基于jdk镜像运行容器,从服务器获取jdk镜像。代码语言:javascript copy docker pull openjdk:8u 创建目录并将jar包上传到该目录。

代码语言: javascript copy cd /home/ mkdir www/spring- Boot-docker 与 Jar 放在同一目录下。编写一个shell脚本,名称为:start.sh 代码语言:javascript copy #!/bin/bashecho -e "\n############## ## build service start ###### ##################"#删除docker容器echo -e "\n1,删除docker容器[developer-platform-b??asic -dev] start ..."sudo docker rm - f spring-boot-docker-1.0# docker run # docker run Developer-platform-b??asic-1.0.0echo -e "\n2, docker run 构建容器 [spring -boot-docker-1.0] start ..." sudo docker run --name spring-boot-docker-1.0 -d -p :\-v /home/www/spring-boot-docker:/jar openjdk :8u\java -jar /jar/spring-boot-docker-1.0.jar --spring.profiles.active=devecho -e "\n3, docker ps 容器 [spring-boot-docker-1.0] 启动 ...." grep spring-boot-docker-1.0echo -e "\n4, docker 日志容器 [spring-boot-docker-1.0] 启动 ...."sudo docker log -f -t spring-boot-docker-1.0 > ./logs/log_$(date +%Y%m%d).out 2>&1 &echo -e "\n##### ##########构建服务端########################》核心脚本解释:1.sudo docker run 这是Docker中用于运行容器的命令,通常需要使用sudo权限来执行Docker命令,以确保您有足够的权限来管理容器。

2. --name spring-boot-docker-1.0:这是为Docker容器指定的。 .name,容器的名称设置为“spring-boot-docker-1.0” 3. -d:该选项表示在后台运行容器(即以守护进程模式运行)。

4. -p:: 该选项用于将主机的端口映射到容器的端口,以便外部可以通过容器访问应用程序。 5. -v /home/www/spring-boot-docker:/jar:该选项用于将主机的文件系统目录与容器中的目录挂载。

在本例中,主机上的 /home/。 www/spring-boot-docker 目录挂载到容器内的 /jar 目录。

这通常用于将应用程序的代码和资源文件从主机复制到容器,以便在容器内运行应用程序。 :这是要在容器中使用的 Docker 映像的名称和标签。

这里使用的是基于OpenJDK 8u的Java镜像,其中包含Java运行环境7。 java -jar /jar/spring-boot。

-docker-1.0.jar --spring.profiles.active=dev:这是在容器内运行的命令。它启动 Java 虚拟机 (JVM) 并在 JVM 内运行 Spring Boot 应用程序。

具体来说,它运行JAR文件/jar/spring-boot-docker-1.0.jar并通过--spring.profiles.active=dev指定Spring配置文件的激活配置。该脚本的目的是创建一个名为“spring-boot-docker-1.0”的 Docker 容器,该容器运行基于 Spring Boot 的 Java 应用程序,该应用程序侦听端口并将 /home/www/ 放置在主机上-docker目录挂载到容器内的/jar目录下,供应用程序使用。

这样就可以通过主机的端口访问到容器中运行的Spring Boot应用程序了。运行脚本 sh start.sh 并稍后发布。

只需要替换宿主机目录下的jar包并重启容器即可。我正在参加腾讯科技创造特训营第二期有奖征文比赛,分享奖金池1万元和键盘手表。

基于 Spring Boot 项目实现 Docker 容器化部署

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 镁伽科技黄瑜清:智能自动化给生命科学带来巨大变革

    镁伽科技黄瑜清:智能自动化给生命科学带来巨大变革

    近日,戈壁创投年度投资峰会在线上举行。 戈壁创投邀请LP及被投企业经理参加会议,分享收获,共同努力。 探索趋势,见证未来。 2019年,国际环境复杂严峻,资本市场波动剧烈,加上疫情影响,股权投资面临前所未有的考验。 在“危机”与“机遇”交叉的环境下,戈壁创投继续保持

    06-18

  • 超星星完成数亿元C轮融资,加速释放优质碳化硅衬底产能

    超星星完成数亿元C轮融资,加速释放优质碳化硅衬底产能

    据投资界(ID:pedaily)12月14日消息,江苏超星星半导体股份有限公司超星行(以下简称“超星行”)近日完成数亿元C轮融资。 本轮融资由国际知名投资机构领投,商洛电子、老股东策资本跟投。 云秀资本担任本轮融资独家财务顾问。 超星星成立于今年4月,总部位于江苏南京。 致

    06-18

  • 以36.5亿元卖掉公司后,他流落街头说:我再也不会创业了,我要投资!

    以36.5亿元卖掉公司后,他流落街头说:我再也不会创业了,我要投资!

    沉寂了五个多月后,橙晶创始人乌海因为一篇文章再次回到公众视野。   2天前,吴海参加了摩根士丹利举办的一场“庆祝交易成功”的聚会(橙晶酒店“卖身”给华住酒店)。 “为了庆祝我的公司出售,我的心情可能不太好。 我不知道为什么。 醉了。 ”在《卖了酒店,昨晚,我喝醉

    06-18

  • 13小时破1207亿!砍单的背后是单打的狂欢,潮流已至

    13小时破1207亿!砍单的背后是单打的狂欢,潮流已至

    13:09:49,天猫双11全球狂欢成交额破亿元!地球已经无法阻挡国人“恐怖”的购买力了!虽然本次双11小败家的最终战斗力尚未揭晓,但与去年的亿元数据相比,已经提前了10小时50分11秒。 在同时喊出“痛”和“爽”的同时,国人到底能以怎样的数字打破世人的想象,还有待观察。 很

    06-17

  • 首次发布 - Gluetacs Therapeutics完成A轮融资,加速蛋白降解药物临床转化

    首次发布 - Gluetacs Therapeutics完成A轮融资,加速蛋白降解药物临床转化

    投资界(ID:pedaily)5月31日消息,Gluetacs Therapeutics宣布获得A轮融资,由黄埔生物医药基金领投,其次是广东造币投资、南湾百奥、思南元科。 本轮融资将重点关注博信生物的产品管线GT、GT的临床一期推进及临床前项目开发。 标新生物是上海科技大学免疫化学研究所孵化的一

    06-17

  • 机构也“疯狂”!北京交易所成立以来,累计开展调查762次,谁是“机构调查之王”?

    机构也“疯狂”!北京交易所成立以来,累计开展调查762次,谁是“机构调查之王”?

    作者|徐明辉编辑|六耳源|直达北京交流 年已结束。 回顾今年的经济发展,北京证券交易所是中国资本市场绕不开的话题。 北京交易所作为服务创新型中小企业的主阵地,将成就一批中小企业。 一些企业从被忽视,到如今已颇具规模,如今正站在聚光灯下,接受机构的深入研究。 据

    06-18

  • 菜鸟驿站进军数字化社区生活,正式推出团购、洗衣、回收服务

    菜鸟驿站进军数字化社区生活,正式推出团购、洗衣、回收服务

    进军团购、洗衣、回收……菜鸟驿站刚刚宣布,将从快递服务全面升级为数字化社区生活服务。 据投资界(微信ID:pedaily)消息,今日(6月23日)全球智慧物流峰会上,菜鸟小站宣布升级为数字社区生活小站:通过团购将值得信赖的产品送到你家门口、洗衣、回收等便捷服务。 这意味

    06-17

  • 投资界独家-传闻宝宝树引入互联网巨头加持,估值约150亿元

    投资界独家-传闻宝宝树引入互联网巨头加持,估值约150亿元

    据投资界5月28日消息,有消息称,国内母婴龙头企业宝宝树将引入互联网+来自巨头互联网的新一轮战略投资,最新估值约为1亿元人民币。   援引该消息,人士表示,投资合作计划将于近期公布。 除了战略资本合作、进一步优化股东结构布局外,这个互联网平台也将极大赋能宝宝树在

    06-17

  • iQOO Z3图赏:售价2000元以下的“能手卡”

    iQOO Z3图赏:售价2000元以下的“能手卡”

    不到一个月的时间,iQOO就接连发布了两款新机,有点让人应接不暇。 iQOO Neo 5和iQOO Z3都打“性价比”牌,都有一定的特色,是iQOO品牌主打销量的两条产品线。 ▲新发布的iQOO Z3。 我们在体验iQOO 7时,曾说它是“三双”高手。 它的存在就是带领整个队伍的进攻去攻占城市和领

    06-21

  • 普通人对亚运会的热情尽在快手

    普通人对亚运会的热情尽在快手

    这个中秋国庆假期,没有什么话题能比杭州亚运会更火爆了。 自上月14日亚运会门票开售以来,不少赛事门票都被观众抢购一空。 除了观看赛事本身,看明星在亚运会上讨论比赛、为中国队加油、分享自己的观赛感受也成为一种热潮。 随着29日比赛男子50米蛙泳决赛覃海洋率先冲线,中

    06-18

  • 上海港汽车出口同比增长超过50%

    上海港汽车出口同比增长超过50%

    上海港汽车出口开门红。 海通码头1月份出口各类车辆超过2万辆,同比增长超过50%。 上海作为全国最大的汽车进出口口岸,正在改变过去“出口产品低端、出口市场低端”的局面。 过去60%以上出口到拉美、非洲、中东等地区,到现在欧洲、美国、新西兰、澳大利亚等发达国家占比接近

    06-18

  • 硅谷精英所信奉的“AI宗教”到底是做什么的?

    硅谷精英所信奉的“AI宗教”到底是做什么的?

    作者 |高念编辑|靖宇 滑雪的终点是骨科,科学的终点是……神学? 2019年是当之无愧的“AI+大模型”年。 以ChatGPT为代表的生成式AI的快速进步,甚至让人们认为大型语言模型有资格被称为“世界模型”——人工智能从未像今天这样。 如此接近“神性”。 更难以想象的是,八年前,

    06-17