使用 Maven 将项目打包成 Docker 镜像,通常需要结合 Dockerfile 和 Maven 插件来操作。常用的插件有 docker-maven-plugin、jib-maven-plugin,以及 Spring Boot 官方自带的插件。下面把这三种方式拆开讲清楚,看看各自适合什么场景,帮助您快速掌握 Maven 打包 Docker 镜像的实战技巧。

1. 准备工作
- 安装 Docker:确保本地或服务器上已安装 Docker 运行环境,这是构建和运行容器的基础。
- 创建 Spring Boot 项目:假设您已经有一个现成的 Spring Boot 项目,接下来就是如何将它打包并放入容器中运行。
2. 使用 docker-maven-plugin 打包 Docker 镜像
(1)在 pom.xml 中添加插件
com.spotify docker-maven-plugin 1.2.2 ${project.artifactId}:${project.version} ${project.basedir}/src/main/docker / ${project.build.directory} ${project.build.finalName}.jar
(2)创建 Dockerfile
在 src/main/docker 目录下创建 Dockerfile 文件,用于自定义镜像构建过程:
# 使用官方的 Java 8 镜像作为基础镜像 FROM openjdk:8-jdk-alpine # 设置工作目录 WORKDIR /app # 将打包好的 JAR 文件复制到容器中 COPY target/myapp-0.0.1-SNAPSHOT.jar app.jar # 暴露端口 EXPOSE 8080 # 启动应用 ENTRYPOINT ["java", "-jar", "app.jar"]
(3)打包并构建 Docker 镜像
执行以下 Maven 命令,即可完成打包并生成镜像:
mvn clean package docker:build
(4)运行 Docker 容器
docker run -p 8080:8080 myapp:0.0.1-SNAPSHOT
3. 使用 jib-maven-plugin 打包 Docker 镜像
(1)在 pom.xml 中添加插件
com.google.cloud.tools jib-maven-plugin 3.2.1 myapp:${project.version}
(2)打包并构建 Docker 镜像
运行以下命令,无需 Dockerfile 即可直接构建镜像:
mvn clean package jib:dockerBuild
(3)运行 Docker 容器
docker run -p 8080:8080 myapp:0.0.1-SNAPSHOT
4. 使用 spring-boot-maven-plugin 打包 Docker 镜像
(1)在 pom.xml 中添加插件
org.springframework.boot spring-boot-maven-plugin myapp:${project.version}
(2)打包并构建 Docker 镜像
Spring Boot 官方插件支持一键构建镜像,命令如下:
mvn spring-boot:build-image
(3)运行 Docker 容器
docker run -p 8080:8080 myapp:0.0.1-SNAPSHOT
5. 总结
docker-maven-plugin:需要手动编写 Dockerfile,适合需要自定义镜像的场景,比如安装特定工具、修改时区、进行多层优化等。jib-maven-plugin:无需 Dockerfile,直接构建镜像,适合简单场景,而且不需要本地 Docker 守护进程,在 CI/CD 流水线中使用非常清爽。spring-boot-maven-plugin:Spring Boot 官方支持,开箱即用,适合纯 Spring Boot 项目,连插件配置都省去不少。
根据项目实际需求选择合适的插件,就能高效地将 Maven 项目打包成 Docker 镜像并部署到容器环境中。选择权在您手中,看哪个更顺手,就选哪个吧。
