在这篇教程中,我们将学习如何使用 Maven 插件为 Spring Boot 应用构建 Docker 镜像。我们将使用 spring-boot-maven-plugin 和 dockerfile-maven-plugin 这两个插件。
一、前提条件
- 已安装 Docker。
- 已安装 JDK 8 或以上版本。
- 已安装 Maven。
二 创建一个 Spring Boot 项目
首先,使用 Spring Initializr 创建一个新的 Spring Boot 项目,或者你可以使用已有的项目。
curl https://start.spring.io/starter.zip -d dependencies=web -d type=maven-project -d language=java -d bootVersion=2.6.3 -o demo.zip
unzip demo.zip -d demo
cd demo
三、配置 Maven 插件
在 pom.xml 中添加 Docker Maven 插件配置。在 标签内添加以下内容:
<build>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Dockerfile Maven Plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>your-dockerhub-username/demo</repository>
<tag>${project.version}</tag>
<skipDockerBuild>false</skipDockerBuild>
</configuration>
</plugin>
</plugins>
</build>
四、创建 Dockerfile
在项目根目录创建一个 Dockerfile 文件,并添加以下内容:
# 使用官方的 OpenJDK 作为基础镜像
FROM openjdk:8-jdk-alpine
# 设置工作目录
VOLUME /tmp
# 复制 jar 文件到容器中
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
# 运行应用
ENTRYPOINT ["java","-jar","/app.jar"]
五、构建和运行 Docker 镜像
使用以下命令来构建项目和 Docker 镜像:
mvn clean package dockerfile:build
构建成功后,终端输出如下所示:
构建完成后,你可以使用以下命令运行 Docker 容器:
docker run -p 8080:8080 your-dockerhub-username/demo:0.0.1-SNAPSHOT
运行成功后,浏览器访问 http://localhost:8080 可以看到 Spring Boot 应用的默认页面。
六、推送 Docker 镜像到 Docker Hub
确保已登录到 Docker Hub:
docker login
然后使用以下命令将镜像推送到 Docker Hub:
mvn dockerfile:push