1. 概述
在这篇文章中,我们将展示如何将基于jar的应用程序Docker化。务必阅读关于使用Docker的好处这里。
2. 构建可运行的jar
我们将使用Maven来构建可运行的jar。
因此,我们的应用程序有一个简单的类HelloWorld.java
,带有main
方法:
public class HelloWorld {
public static void main(String[] args){
System.out.println("Welcome to our application");
}
}
并且我们使用maven-jar-plugin
来生成可运行的jar:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<archive>
<manifest>
<mainClass>com.baeldung.HelloWorld</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
3. 编写Dockerfile
现在让我们在Dockerfile
中编写将我们的可运行jar Docker化的步骤。Dockerfile
位于构建上下文的根目录:
FROM openjdk:17-jdk-alpine
MAINTAINER baeldung.com
COPY target/docker-java-jar-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
在第一行,我们从官方仓库导入OpenJDK Java 17版本作为基础镜像。随着后续步骤的进行,这将在基础镜像之上创建额外的层。
在第二行,我们指定图像的维护者,这里是baeldung.com
。这个步骤不会创建额外的层。
第三行,我们通过将构建上下文中target
文件夹中的生成jar,docker-java-jar-0.0.1-SNAPSHOT.jar
,复制到容器的根目录(名为app.jar
)来创建新的层。
最后一条语句指定了用于此镜像执行的统一命令。在这种情况下,我们告诉容器使用java -jar
命令运行app.jar
。此外,这一行也不会引入额外的层。
4. 构建和测试镜像
现在我们有了Dockerfile
,让我们使用Maven来构建和打包我们的可运行jar:
mvn package
然后,我们构建我们的Docker镜像:
docker image build -t docker-java-jar:latest .
在这里,我们使用-t
标志来指定以<name>:<tag>
格式的名称和标签。在这个例子中,docker-java-jar
是我们的镜像名称,标签是latest
。.
表示Dockerfile
所在的路径,此处是当前目录。
注意:我们可以使用相同的名称和不同的标签构建不同的Docker镜像。
最后,让我们从命令行运行我们的Docker镜像:
docker run docker-java-jar:latest
上述命令运行我们的Docker镜像,通过<name>:<tag>
格式的名称和标签识别它。
5. 总结
在这篇文章中,我们了解了将Java可运行jar Docker化的步骤。本文所用的示例代码可在GitHub上查看。