Docker 化 Java 應用程序
一、概述
在本文中,我們將展示如何Dockerize 一個 Java 可運行的基於 jar 的應用程序。請閱讀使用 Docker 的好處。
2. 構建 Runnable 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 中編寫Dockerfile
可運行 jar 的步驟。 Dockerfile
位於build context
的根目錄中:
FROM openjdk:11
MAINTAINER baeldung.com
COPY target/docker-java-jar-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
在這裡,在第一行中,我們從他們的官方存儲庫導入 OpenJDK Java 版本 11 鏡像作為我們的基礎鏡像。隨著我們前進,後續行將在此基礎圖像上創建附加層。
在第二行中,我們為我們的鏡像指定維護者,在本例中為baeldung.com
。此步驟不會創建任何其他圖層。
在第三行中,我們通過將生成的 jar docker-java-jar-0.0.1-SNAPSHOT.jar
從build context
的target
文件夾複製到名為app.jar
的容器的root
文件夾中來創建一個新層。 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>
格式的名稱和標籤來識別它。
4。結論
在本文中,我們看到了將可運行的 Java jar Docker 化的步驟。本文中使用的代碼示例可在 GitHub 上獲得。