怎么把Java应用打包成Docker镜像?对熟悉Docker的同学这应该是一个很简单的问题,把项目打包成JAR包然后在Dockerfile里用ADD命令把JAR文件放到镜像里,启动命令设置执行这个JAR文件即可。
比如一个使用Maven构建的Spring应用就可以用下面这个Dockerfile构建镜像。
FROM openjdk:8-jre
ADD target/*.jar /application.jar
ENTRYPOINT ["java", "-jar","/application.jar"]
上面这个Dockerfile很好理解,使用Maven构建的Java项目的目录结构统一是
project
│ pom.xml
└───src // 源文件目录
│ │
│ └───main
│ │
│ └───java
│
└───target // class和jar文件的目录
用mvn clean package打包后会把JAR文件生成在target目录里,通过java -jar命令即可执行编译好的程序。
所以上面的Dockerfile里就进行了把JAR从target目录里添加到Docker镜像中以及将jar -jar /application.jar 设置成容器的启动命令这两步操作。
不过除了这种最原始的方法外我们还可以使用Maven的一些插件,或者Docker的多阶段打包功能来完成把Java应用打包成Docker镜像的动作。
Maven插件构建镜像
Spotify公司的dockerfile-maven-plugin和Google公司出品的jib-maven-plugin是两款比较有名的插件,下面简单介绍一下dockerfile-maven-plugin的配置和使用。
其实使用方法很简单,我们在POM文件里引入这个p