Maven项目如何打包成Docker镜像?三种常用插件详解
使用 Maven 将项目打包成 Docker 镜像通常需要结合 Dockerfile 和 Maven 插件(如 docker-maven-plugin 或 jib-maven-plugin)。
1. 准备工作
- 安装 Docker:确保本地或服务器上已安装 Docker。
- 创建 Spring Boot 项目:假设你已经有一个 Spring Boot 项目。
2. 使用docker-maven-plugin打包 Docker 镜像
(1)在pom.xml中添加插件
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<imageName>${project.artifactId}:${project.version}</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>(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中添加插件
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<to>
<image>myapp:${project.version}</image>
</to>
</configuration>
</plugin>
</plugins>
</build>(2)打包并构建 Docker 镜像
运行以下 Maven 命令:
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中添加插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>myapp:${project.version}</name>
</image>
</configuration>
</plugin>
</plugins>
</build>(2)打包并构建 Docker 镜像
运行以下 Maven 命令:
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,直接构建镜像,适合简单场景。spring-boot-maven-plugin:Spring Boot 官方支持,适合 Spring Boot 项目。
根据项目需求选择合适的插件,可以高效地将 Maven 项目打包成 Docker 镜像并部署到容器环境中。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决Java Redis删除HashMap中的key踩到的坑
这篇文章主要介绍了解决Java Redis删除HashMap中的key踩到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-02-02
springBoot静态资源加载不到,并且配置了也不生效问题及解决
这篇文章总结了一个在Spring Boot 2.6.x版本中,由于路径匹配策略改变导致静态资源无法加载的问题,并提供了解决方案:通过配置类或在配置文件中设置路径匹配策略为AntPathMatcher,或者直接降级Spring Boot版本2025-02-02
Spring Boot的filter(过滤器)简单使用实例详解
过滤器(Filter)的注册方法和 Servlet 一样,有两种方式:代码注册或者注解注册,下面通过实例给大家介绍Spring Boot的filter(过滤器)简单使用,一起看看吧2017-04-04
SpringBoot整合SSO(single sign on)单点登录
这篇文章主要介绍了SpringBoot整合SSO(single sign on)单点登录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-06-06
springboot整合ehcache 实现支付超时限制的方法
在线支付系统需要极高的稳定性,在有限的系统资源下,稳定性优先级要高于系统并发以及用户体验,因此需要合理的控制用户的支付请求。下面通过本文给大家介绍springboot整合ehcache 实现支付超时限制的方法,一起看看吧2018-01-01


最新评论