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

【零基础】手把手教你使用Docker部署Springboot项目(详细版) 还不会使用Docker部署Springboot项目的小伙伴,不妨进来看看呗,希望文中内容对你有所帮助! 阅读详情

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


将Spring Boot项目部署到Docker容器中的涉及几个主要步骤:

01 准备Docker镜像

  • 首先,需要选择一个基础镜像,通常是包含Java运行时环境的镜像,例如OpenJDK。可以从Docker Hub或其他镜像仓库中获取这些镜像。

  • 接下来,需要在基础镜像上构建一个包含Spring Boot应用程序的镜像。这包括将应用程序的JAR文件、依赖项和配置文件添加到镜像中。

02 编写Dockerfile

  • Dockerfile是一个文本文件,其中包含了构建Docker镜像的指令。需要编写一个Dockerfile来指定如何构建包含Spring Boot应用程序的镜像。

  • 在Dockerfile中,可以使用COPY指令将本地文件(包括Spring Boot应用程序的JAR文件和配置文件)复制到镜像中。

  • 使用RUN指令可以在容器内运行命令,例如安装依赖项或执行应用程序的构建。

  • 使用CMD或ENTRYPOINT指令指定在容器启动时要运行的命令,通常是启动Spring Boot应用程序的命令。

03 构建Docker镜像

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

04 运行Docker容器

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

  • 还可以使用其他选项来配置容器,例如挂载卷、设置环境变量等。

05 访问应用程序

  • 一旦容器运行,可以通过访问主机的端口(在上述示例中是8080)来访问运行在Docker容器中的Spring Boot应用程序。

Docker容器化部署Spring Boot项目的原理涉及将应用程序及其依赖项打包到一个Docker镜像中,然后在容器内运行该镜像。

这使得应用程序在不同环境中更加可移植和隔离,同时也方便了部署和扩展。使用Docker可以大大简化应用程序的部署流程,并提供了更好的资源管理和隔离,以及更高的可伸缩性。

06 闲言少叙,上科技!!!

方式一:直接构建jar包运行的镜像

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

  • 在该目录下创建Dockerfile文件

FROM openjdk:8u312
MAINTAINER zhangt
ADD spring-boot-docker-1.0.jar zhangt.jar
EXPOSE 8520
ENTRYPOINT ["java","-jar","zhangt.jar"]

Dockerfile的内容解释:

FROM openjdk:8u312

这一行指定了基础镜像,从openjdk:8u312镜像构建。它使用了OpenJDK 8的版本号为312的镜像作为基础。这是一个包含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 8520

这一行使用EXPOSE指令声明容器将监听的端口号,这里指定为8520。请注意,这只是一个元数据声明,它不会自动将端口映射到主机上。

ENTRYPOINT ["java","-jar","zhangt.jar"]

这一行设置了容器启动时要执行的命令。在这种情况下,容器将以java -jar zhangt.jar命令启动,这会运行Spring Boot应用程序。java命令会启动Java虚拟机(JVM),并执行zhangt.jar中的可执行代码。

这Dockerfile的作用是基于OpenJDK 8u312镜像构建一个包含Spring Boot应用程序的Docker镜像。一旦构建完成,可以使用这个镜像来运行Spring Boot应用程序的容器,容器将监听8520端口,可以通过适当的端口映射来让外部访问应用程序。

  • 创建好Dockerfile文件之后,执行命构建镜像

docker build -t zhangt .

注意最后的“. ” 表示Dockerfile在当前文件目录下。“zhangt” 表示构建的镜像,构建成功后可以使用“docker images”命令查看镜像。“-t” 选项用于指定镜像的名称和标签,你可以将“zhangt”  替换为你想要的名称和标签。

  • 镜像构建成功之后,就可以运行容器。

docker run -d --restart=always --name zhangt -p 8520:8520 zhangt

各个参数的含义:

docker run: 用于启动 Docker 容器的命令。

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

--restart=always: 这是另一个选项,表示容器在退出时总是重新启动。即使容器因为错误或其他原因而停止,Docker 也会尝试自动重新启动容器。

--name zhangt: 这是用于给容器指定一个名称的选项。容器的名称被设置为 "zhangt"。

-p 8520:8520: 这是用于将主机端口与容器端口进行映射的选项。这个选项将主机的 8520 端口映射到容器的 8520 端口。这样,外部可以通过访问主机的 8520 端口来访问容器内运行的应用程序。

zhangt: 这是容器的名称或镜像名称,表示要运行的容器是基于名为 "zhangt" 的 Docker 镜像创建的。如果 "zhangt" 是一个镜像名称,Docker 将查找该镜像并在容器中运行它。

这个命令的目的是在后台运行一个 Docker 容器,该容器使用 "zhangt" 镜像创建,并将主机的 8520 端口映射到容器的 8520 端口。容器的名称设置为 "zhangt-p",并且如果容器在任何情况下退出,Docker 会自动重新启动它。这通常用于部署应用程序,以确保应用程序在意外情况下能够自动恢复。

启动容器后可以使用 “docker ps”命令查看启动的容器

docker logs -f --tail 1000 容器id ,可以查看服务的日志。

如果想更新jar包,只需要使用 docker cp spring-boot-docker-1.0.jar 容器ID:/zhangt.jar,就可以将spring-boot-docker-1.0.jar拷贝进容器并重命名,然后 docker restart 容器ID 重启容器。

方式二:基于jdk镜像运行容器

  • 在服务器中来取jdk镜像

docker pull openjdk:8u181
  • 创建目录,并将jar包上传到该目录

cd /home/  mkdir www/spring-boot-docker
  • 在Jar放置的同级目录,编写shell脚本命名为:start.sh

#!/bin/bash
echo -e "\n################ build service start #########################"

# delete docker container
echo -e "\n1, delete docker container [developer-platform-basic-dev] start ......"
sudo docker rm -f spring-boot-docker-1.0

# docker run # docker run developer-platform-basic-1.0.0
echo -e "\n2, docker run build container [spring-boot-docker-1.0] start ......"
sudo docker run --name spring-boot-docker-1.0 -d -p 8741:8741 \
-v /home/www/spring-boot-docker:/jar openjdk:8u181 \
java -jar /jar/spring-boot-docker-1.0.jar --spring.profiles.active=dev

echo -e "\n3, docker ps container [spring-boot-docker-1.0] start ...."
sudo docker ps -a  | grep spring-boot-docker-1.0

echo -e "\n4, docker logs container [spring-boot-docker-1.0] start ...."
sudo docker logs -f -t spring-boot-docker-1.0 > ./logs/log_$(date +%Y%m%d).out 2>&1 &

echo -e "\n################ build service end #########################"

核心脚本解释:

1.sudo docker run 这是用于在Docker中运行容器的命令。通常需要使用sudo权限来执行Docker命令,以确保具有足够的权限来管理容器。 

2. --name spring-boot-docker-1.0: 这是为Docker容器指定的名称,容器的名称被设置为"spring-boot-docker-1.0"。 

3. -d: 这是一个选项,表示在后台运行容器(即以守护进程模式运行),而不是在前台交互模式下运行。4. -p 8741:8741: 这个选项用于将主机的端口与容器的端口进行映射。具体来说,将主机的8741端口映射到容器的8741端口,这样外部可以通过主机的8741端口访问容器中的应用程序。 

5. -v /home/www/spring-boot-docker:/jar: 这个选项用于将主机的文件系统目录与容器内的目录进行挂载。在这种情况下,将主机上的/home/www/spring-boot-docker目录挂载到容器内的/jar目录。这通常用于将应用程序的代码和资源文件从主机复制到容器中,以便在容器内运行应用程序。 

6. openjdk:8u181: 这是要在容器中使用的Docker镜像的名称和标签。在这里,使用的是一个基于OpenJDK 8u181的Java镜像,该镜像包含了Java运行时环境。 

7. java -jar /jar/spring-boot-docker-1.0.jar --spring.profiles.active=dev: 这是在容器内运行的命令。它启动了Java虚拟机(JVM),并在JVM内运行了一个Spring Boot应用程序。具体来说,它运行了/jar/spring-boot-docker-1.0.jar这个JAR文件,并通过--spring.profiles.active=dev指定了一个Spring配置文件的激活配置。

这个脚本的作用是创建一个名为"spring-boot-docker-1.0"的Docker容器,该容器运行一个基于Spring Boot的Java应用程序,该应用程序监听8741端口,并将主机上的/home/www/spring-boot-docker目录挂载到容器内的/jar目录,以供应用程序使用。

这样,可以通过主机的8741端口访问运行在容器中的Spring Boot应用程序。

  1. 运行脚本 sh start.sh

  2. 以后发布,只需要把宿主机目录里的jar包替换掉,重启容器。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
在这里插入图片描述​
在这里插入图片描述​

还在手动部署代码?手摸手教你docker+jenkins实现一键容器化部署springboot项目 docker + jenkins 一键部署springboot项目 阅读详情

相关推荐

易购项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。

基于SpringBoot+MyBatis实现,采用Docker容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

weixin_51812604的博客 1416

使用Docker部署SpringBoot项目(避坑+超级详细版本)

愿我们的付出都值得

IT小辉同学 1万+

基于Dockerfile的博客管理系统的容器化部署

目录1.任务描述1.1课题的基本内容一个基于SpringBoot + Vue开发的前后端分离博客项目,后端涵盖新建项目、整合 Mybatis Plus、Shiro + JWT 等技术,还包括异常处理、实体校验等。前端涉及环境准备、组件安装、页面路由、登录页面等开发,如安装 element-ui、axios 等,还实现了博客列表、编辑、详情等页面及路由权限拦截。1.2 项目整体技术架构该博客管理系统的技术架构遵循现代分布式系统设计原则,采用了前后端分离的开发模式。

SXXYNHHXX的博客 943

【Docker】Docker部署SpringBoot项目

使用Docker、DockerCompose部署SpringBoot、nginx、静态资源的代码示例。

qq_38924779的博客 9633

告别复杂配置:dbswitch vs 传统工具(Kettle/DataX)在Greenplum数据同步中的性能对比

本文深入对比了新兴工具dbswitch与传统ETL工具Kettle、DataX在Greenplum数据同步中的表现。重点分析了dbswitch如何通过免中间文件、利用二进制COPY协议等设计,在异构数据库同步场景下实现更优的性能和更简化的配置,为技术选型提供清晰参考。

transformer2023的博客 1046

UFS 3.1协议分析(第一至四章) -- UFS概述

Contents协议规范规范参考术语和定义简单概述通用特性接口特性功能特性 协议规范     UFS3.1协议规定了UFS电气接口和存储器件的特性以及系统架构。 特性:低功耗、高数据吞吐量、低电磁干扰、大容量存储器子系统效率的优化 电气接口:使用基于MIPI M-PHY的高级差分接口;M-PHY作为物理层,MIPI UniPro作为链路层,二者结合形成UFS接口的互联。 架构模型:参考 INCITS T10(SCSI) SAM 标准,命令协议基于 INCITS T1

Frank_sample的专栏 1万+

【初识 Docker | 中级篇】 Docker 中部署 Spring Boot 微服务详解

本文将为您详细介绍如何在Docker容器中部署Spring Boot服务。首先,您需要为您的Spring Boot应用程序创建一个Docker镜像。然后将镜像在Docker容器中运行起来即可提示:以下是本篇文章正文内容,下面案例可供参考以上就是今天要讲的内容,本文仅仅简单介绍了如何在Docker容器中部署Spring Boot服务,以上方法亲测有效,希望能给大家一个参考。⭕关注博主,不迷路 ⭕。

~~~~~~~BUG FLY~~~~~~~~~ 5571

电源完整性仿真流程梳理

可根据仿真流程导图,一步一步的去设置完成仿真。仿真的关键,在于对电路回路的理解以及所放置的电压源与电流的合理性,对于去耦电容的选择,则需要根据谐振频率计算,从而选取有效滤波的容值。

csy17729158342的博客 3442

Docker 快速部署Springboot项目(完整详细版)

Docker快速详细的部署Springboot项目

Touch 4万+

VMvare 桥接模式无法联网、没有未桥接的主机网络适配器,无法将网络更改为桥接状态。

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!战项目源码讲义》点击传送门即可获取!**

q16974058的博客 4330

算法竞赛入门到进阶 --- 完整学习路线(含知识点讲解)

前言: 咳咳,接触算法竞赛也有一年了,却从来都没有进行过一次系统的学习,稀里糊涂的就这么搞了半年,如今,我决定认认真真的进行一次系统的复盘。嗯嗯,先把大体路线列出来,然后往后每天搞几篇,可能大三能完成,可能永远也不能写完这些,我只能慢慢来,一起共勉吧。冲了!(主要是太菜了,不系统学习下,怕是铜牌都拿不到呀!) 算法竞赛入门到进阶一、sort函数自定义排序二、c++容器的使用1.vector动态数组2.stack栈3.queue队列4.list链表5.set集合6.map映射三、二进制子集生成四、bfs.

qq_43514659的博客 2万+

SpringBoot与Docker容器化部署:从开发到生产的无缝衔接

在当今的软件开发领域,Spring Boot 凭借其快速开发、简化配置等特性,成为 Java 开发者构建微服务应用的首选框架。而 Docker 作为容器化技术的代表,为应用的打包、分发和部署提供了高效、一致的解决方案。将 Spring Boot 应用与 Docker 结合,能够实现从开发环境到生产环境的无缝衔接,极大地提高开发和运维效率。本文将详细介绍如何将 Spring Boot 应用进行 Docker 容器化部署,涵盖从开发环境搭建到生产环境部署的全过程。

梵心白莲的博客 1023

模型实战(31)之 yolo26 实现对手部关键点数据集 的训练与关键点检测

模型实战(31)之 yolo26 实现对手部关键点数据集 的训练与关键点检测

yohnyang的博客 208

微服务入门必备:SpringBoot+Docker实现容器化部署的完整流程

在当今的软件开发领域,微服务架构因其高可扩展性、灵活性和易于维护等特点,受到了广泛的关注和应用。而 Docker 作为一种轻量级的容器化技术,为微服务的部署提供了极大的便利。Spring Boot 则是一个简化 Spring 应用开发的框架,它可以帮助开发者快速搭建独立的、生产级别的 Spring 应用。本文将详细介绍如何使用 Spring Boot 和 Docker 实现微服务的容器化部署,为技术人员提供一个完整的入门指南。

梵心白莲的博客 882

Unity之OpenXR+XR Interaction Toolkit接入HTC Vive

目前VR领域,最流行的设备要当属HTC VIVE了。以前在Unity端接入HTC VIVE设备时,都是通过SteamVR+VRTK来接入的。但是随着Unity的版本升级和OpenXR标准的流行,再加上VR设备的逐渐增多。SteamVR+VRTK的方式已经无法更好的满足大家的需求。

TxNet 4137

SQL基础:HQL之常用的行列转换应用总结

行列转换是数据开发者的基本技能,也是面试重点,在数据开发中处处可见,本文对常见的几种情况进行了总结,包括了多行转多列,多行转单列,多列转多行,单列转多行的几种情况,并给出了解决思路和方法,读者可根据本文给出的思路灵活应对业务中遇到的问题。

石榴姐yyds 1800

毕业设计SpringBoot项目效率提升实战:从脚手架到自动化部署的全流程优化

开发阶段:引入DevTools,实现代码热重载,告别漫长重启。配置阶段:使用Spring Profiles隔离多环境配置,利用Maven Profiles辅助构建,做到一键切换。部署阶段:通过Docker容器化,实现“一次构建,到处运行”,部署过程标准化、自动化。这些实践并不复杂,但组合起来能为你节省大量不必要的时间消耗。毕业设计时间有限,最大的效能提升就是把时间花在创造性的业务逻辑实现上,而不是和工具、环境纠缠。建议你立刻动手,用半天到一天的时间,对照上面的步骤改造自己的项目。

2600_94959972的博客 828

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2020 参考 Docker基本操作,以及基于Docker部署SpringBoot项目

所有操作均在CentOS7.2环境下,使用ROOT用户登录,本篇文章仅做为记录,方便自己日后查看. 1.docker基本操作 安装docker,依次执行以下命令 yum update yum install docker 启动docker systemctl start docker 设置开机自启 systemctl enable docker 查看docker版本 docker -v 更换docker容器镜像服务为阿里的仓库地址 mkdir -p /etc/docker tee /etc/docker/d

qq_41571977的博客 193

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

部署SpringBoot项目到远程docker容器

微服务由于服务数量众多,容器化部署是目前的主流方案。 1、修改docker配置,开启允许远程访问docker的功能 /usr/lib/systemd/system/docker.service 加入 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 重启docker 安装docker插件 安装完成之后需要重启一下IDEA @RestController public class TestDocker { @GetMapp

小岳岳 781

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Docker部署SpringBoot+MySQL项目

本文将讲述使用Dockerfile为SpringBoot应用构建docker项目镜像并部署,此种方式不需要依赖自建的镜像仓库,只需要应用的jar包和一个Dockerfile文件即可。 1.编写Dockerfile文件 # 该镜像需要依赖的基础镜像 FROM java:8 # 指定维护者的名字 MAINTAINER cxhello # 将指定目录下的jar包复制到docker容器的/目录下...

天宇的博客 1703

不要手动部署SpringBoot项目了,使用Docker真香!

作者:流星007toutiao.com/i6843391272229536267目录docker介绍安装dockerUbuntu安装dockerCentOS安装docker通过脚本安装拉...

WantFlyDaCheng的博客 308

【Docker】IDEA Docker插件 SpringBoot 容器化部署

本章内容主要描述如何将springboot服务构建成Docker镜像,并部署到远程容器。

oJuHao12345的专栏 1190

docker部署springboot项目

1.安装Docker依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 2.设置阿里云镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3.安装 Docker-CE yum install docker-ce 4.查看是否安装成功 docker version 出现上述错误即在

qq_35500685的博客 228

【云原生生态圈】:服务快速上云--Docker部署SpringBoot案例详解

**本文将分别讲解==如何用Docker部署MySQL、tomcat、Nginx、Redis,最后用Docker部署SpringBootWeb应用为案例,调用前面的镜像==。本文所涉及的代码以编译打包到我的云服务器中[http://47.106.176.37:8080/hello](http://47.106.176.37:8080/hello),功能比较简单,每访问一次获取redis中记录的值,然后加1,返回给客户端。以实战为线索,逐步深入Docker相关知识,打造完整的Docker学习体系,可查阅,可复

Learning_xzj的博客 4033
上一篇: 动图展示 10 大 Git 命令,让你轻松理解Git
下一篇: Android单元测试之 Mockito
字节自动化测试
博客等级 码龄6年 7034粉丝 1810原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值