当前位置: 首页 > article >正文

SpringBoot教程(三十一) | SpringBoot生成Docker镜像包

SpringBoot教程(三十) | SpringBoot生成Docker镜像包

  • 前提
  • 方式一:spring-boot-maven-plugin 方式
  • 方式二:Dockfile 方式(推荐)

前提

如果你在 Windows 上,确保 Docker Desktop 已经启动并正在运行
在 Linux 上,确保 Docker 服务 已经启动并正在运行。

Docker Desktop提供了一个易于使用的图形用户界面(GUI),方便用户管理容器、镜像和卷等资源。用户可以通过GUI直观地查看容器的运行状态、日志输出和性能指标等信息。
用于Windows和Mac操作系统

还未安装Docker Desktop 具体请看 另一篇文章
SpringBoot教程(安装篇) | Docker Desktop的安装(Windows下的Docker环境)

方式一:spring-boot-maven-plugin 方式

前置条件:需要本地安装 Docker

在pom.xml 的 <build> 配置了 spring-boot-maven-plugin
你不需要写 Dockerfile,也不用操别的心,plugin 都帮你做了,例如 Spring 建议的安全、内存、性能等问题。

<build>
                <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <!--主类的指定-->
                <configuration>
                    <mainClass>com.example.springbootshiro.SpringbootShiroApplication</mainClass>
                </configuration>
                <!--执行定义-->
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                         <!--生成一个包含所有必要组件的可执行jar或war文件-->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
</build>

然后 你就可以里面有个springboot:build-image 的执行命令,它其实就是打Docker 镜像的命令
在这里插入图片描述
双击以后,单模块的我倒是执行成功了,多模块就构建失败了。

方式二:Dockfile 方式(推荐)

前置条件:
1.需要本地安装 Docker
2.要先打包

我这边的包如下:
在这里插入图片描述

然后新建Dockfile文件(没有后缀的)

FROM openjdk:8-jdk-alpine
EXPOSE 8888
ARG JAR_FILE=target/springboot-shiro-0.0.1-SNAPSHOT.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

注释说明:

  • FROM :使用openjdk:8-jdk-alpine作为基础镜像
  • EXPOSE :声明容器运行时监听的端口(主要用于文档和链接系统),不会强制容器监听某个端口,也不会自动在宿主机和容器之间建立端口映射
  • ARG :定义一个构建参数。在这里是jar包在target目录下的位置
  • ADD :将JAR文件添加到镜像中,并重命名为app.jar
  • ENTRYPOINT :设置容器启动时执行的命令

添加镜像以后,我这边是这个样子的。
当然正式环境下,还有很多镜像是需要拉取的,比如数据库相关mysql、redis等等镜像。
我这边只说一下简单的操作
在这里插入图片描述

然后再进行启动操作

docker run -d -p 8888:8080 --name my-springboot-container docker-demo:latest
  • -p 8888:8080:这表示将宿主机的8888端口映射到容器的8080端口。
    这个左边的端口是容器要启动的端口,这个右边的是你原生jar包启动的端口。
    比如原来你的工程配置文件里面配置的 为 server.port=8123,那这个右边的就要变成8123
  • –name my-springboot-container:这是你给容器指定的名称,可以根据需要更改。
  • docker-demo:latest:这是你要运行的镜像的名称和标签。确保这个镜像已经构建并且包含了你想要运行的JAR文件。

然后再进行验证 通过访问 http://localhost:8888(因为你启动容器使用的就是8888)来确认是否已经启动起来了。
你可以通过以下命令,查看 实时日志最后n行日志

docker logs -f 容器id或名称 --tail 1000

在这里插入图片描述
退出这个实时查看模式时,你可以简单地按下 Ctrl + C,即可


http://www.kler.cn/a/327136.html

相关文章:

  • 数据库管理-第256期 Oracle DB 23.6新特性一览(20241031)
  • 如何在BSV区块链上实现可验证AI
  • Linux网络命令:它用于实时监控网络接口的状态变化的命令 ip monitor详解
  • 【WPF】MatrixTransform类
  • QChart中柱形图的简单使用并实现【Qt】
  • IPC机制总结笔记
  • Gdao v1.2.0:Go语言高效ORM框架
  • 初学51单片机之I2C总线与E2PROM二
  • 【动态规划-最长公共子序列(LCS)】力扣583. 两个字符串的删除操作
  • Python和C++及MATLAB距离相关性生物医学样本统计量算法及数据科学
  • WebRTC入门
  • 大屏走马灯与echarts图表柱状图饼图开发小结
  • 嵌入式单片机底层原理详解
  • 一文详解WebRTC、RTSP、RTMP、SRT
  • 《深圳大学学报理工版》
  • 【玩转贪心算法专题】56. 合并区间【中等】
  • 004集—— txt格式坐标写入cad(CAD—C#二次开发入门)
  • mobile_aloha训练过程中pycharm编辑器遇到的问题记录
  • 拿下奇怪的前端报错:SyntaxError: Unexpected token ‘??=‘或‘xxx‘ - 浅谈Nodejs版本过高过低的部分问题
  • ping香港服务器超时的原因通常有哪些?
  • 【笔记】电子绕核运动的轨道半径求解
  • 详解zookeeper四字命令
  • 大数据的挑战是小文件
  • 配音软件哪个好?配音小白用这些
  • Java入门(基础,常见API,JVM,JUC并发编程)
  • NVIDIA 的 Blackwell 架构:解析 B100、B200 和 GB200