使用 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 镜像并部署到容器环境中。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论