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

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

前提

如果你在 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,即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值