java项目打包成 Docker 镜像几种方式
docker-maven-plugin:需要手动编写 Dockerfile,适合需要自定义镜像的场景。jib-maven-plugin:无需 Dockerfile,直接构建镜像,适合简单场景。spring-boot-maven-plugin:Spring Boot 官方支持,适合 Spring Boot 项目。
·
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 项目。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)