打包Spring Boot应用到Docker镜像 🚢

打包Spring Boot应用到Docker镜像 🚢

自从容器技术火热以来,Docker成了开发者部署和发布应用的利器。而Spring Boot作为简洁高效的Java框架,也备受开发者喜爱。今天我们就来聊聊如何把一个Spring Boot项目打包成Docker镜像,然后部署到容器中运行。

环境准备 🍃

开始之前,我们先准备一下必备的环境。我们以一个maven项目为例:

  • Docker
  • JDK和maven
  • 一个Springboot项目

项目配置 ⚙️

这里我使用Spring Boot的maven插件来打包构建项目。首先要确保我们的pom.xml文件中包含以下节点:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.4</version>
    <relativePath/> 
</parent>

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

构建JAR包的命令如下:

mvn package -DskipTests=true

这条命令会让Maven打包项目,并跳过测试阶段,加快构建速度。
构建完成后,你会在target文件夹中看到:

  • my-springboot-app-1.0.0.jar:这是生成的 JAR 包,可以用于部署。
  • classes/:包含编译后的类文件。
  • generated-sources/
  • maven-archiver/
  • original-my-springboot-app-1.0.0.jar

这些都是Maven构建过程中的输出,我们要关注的是my-springboot-app-1.0.0.jar,它包含了应用代码和所有依赖。

构建镜像 🏗️

JAR包构建好后,我们就可以开始构建镜像了。

编写 Dockerfile

我们需要为Spring Boot应用编写一个Dockerfile。

FROM eclipse-temurin:17-jre
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY target/*.jar application.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "application.jar"]

我们使用了eclipse-temurin:17-jre作为基础镜像,并进行了以下操作:

  • 设置工作目录为 application。
  • 使用 ARG 指令定义一个可变的 JAR 文件路径。
  • 将 target 目录下的 JAR 文件复制到镜像中,并命名为 application.jar。
  • 暴露容器的 8080 端口。
  • 使用 ENTRYPOINT 指令定义容器启动时执行的命令。

构建 Docker 镜像

有了 Dockerfile 后,我们可以使用以下命令来构建 Docker 镜像:

docker build . -t my-app:1.0.0

这个命令会读取当前目录下的Dockerfile,并构建一个名为my-app、版本为1.0.0的Docker镜像。

运行容器 🏃

构建好镜像后,我们可以运行容器来测试应用了:

docker run -p 8080:8080 my-app:1.0.0

这个命令会启动一个基于my-app:1.0.0镜像的容器,并把主机的8080端口映射到容器的8080端口。这样我们就可以在浏览器中访问http://localhost:8080 来查看应用是否正常运行了。


打包Spring Boot应用到Docker镜像 🚢
https://coding.gs/2024/05/18/springboot-image/
作者
K
发布于
2024年5月18日
许可协议