将 Java 应用程序容器化
您可以使用 Docker 将编译后的 Java 应用程序与特定的运行环境和其他必要的依赖项一起打包成镜像。 然后,您可以从该镜像运行一个容器,以查看该应用程序在此环境中的运行情况。 这是将应用程序 dockerizing。
本教程介绍如何创建一个 Dockerfile,以使用 Node.js 22 和 Node.js Express 应用程序构建 Docker 镜像。它还展示了如何与他人共享该镜像,并从中运行 Docker 容器。 此外,它还展示如何与他人共享此镜像并从中运行一个 Docker 容器。
创建一个新的 Java 项目
本教程的示例应用程序由单个 HelloWorld.java 文件组成,该文件会将 Hello, World! 打印到控制台并退出。
在主菜单中,进入 .
在 新建项目 向导中,从左侧列表中选择 Java。
在 新建项目 对话框中,将项目命名为
DockerHelloWorld。
在 源代码 目录中创建主 Java 类文件 HelloWorld.java 。
为此,在 项目 工具窗口中,右键点击 源代码 目录,指向 新建 并点击 Java 类。 在 新建Java 类/文件 对话框中,键入
HelloWorld并按 Enter。将以下代码粘贴到新文件中:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }尝试编译并运行该应用程序。
在装订区域中点击
并选择 运行 'HelloWorld.main()'。
您应会在 运行 工具窗口的控制台中看到打印的
Hello, World!。
默认情况下,WebStorm 会将输出编译到项目目录下的 HelloWorld.class 文件中,位于 /out/production/DockerHelloWorld/ 中,这里的 DockerHelloWorld 是当前模块的名称。
创建 Dockerfile
在 项目 工具窗口中,右键点击项目名称,指向 新建 并点击 文件。
在 新建文件… 对话框中,键入 Dockerfile 并按 Enter。
请将以下代码粘贴到新的 Dockerfile 中:
FROM openjdk:17 COPY ./out/production/DockerHelloWorld/ /tmp WORKDIR /tmp ENTRYPOINT ["java","HelloWorld"]
此 Dockerfile 包含基于 openjdk:17 镜像从 Docker Hub 构建镜像的指令。 当您从此映像运行容器时,Docker 会将项目输出目录的内容复制到容器中的 /tmp 目录中(在此情况下,输出目录包含 main 类 HelloWorld.class )。 然后 Docker 将当前工作目录设置为 /tmp 并运行 java HelloWorld。 因此,您应该会看到 Hello, World! 打印到容器日志中。
构建并运行镜像
在 Dockerfile 内侧边栏中,点击
并选择 在 'Docker' 上运行。
WebStorm 创建一个 Dockerfile 运行配置 ,该配置从 Dockerfile 构建一个镜像,然后基于该镜像运行一个容器。 要查看整个过程,请在 构建日志 选项卡中打开 服务 工具窗口。

您可以与他人共享该镜像,例如,准确演示应用程序的预期运行方式,且无需安装 Node.js(仅需要 Docker)。
将您的 Java 应用程序作为 Docker 映像共享
在 服务 工具窗口中,找到从 Dockerfile 构建的映像。
默认情况下,它由唯一的镜像 ID 指定,因为在创建镜像时未提供镜像标签。 您可以编辑相应的运行配置,指定您选择的镜像标签,然后再次运行该配置。
要查找图像,右键点击正在运行的容器,然后选择 。

右键点击具有所需 ID 的图像,然后点击上下文菜单中的 推送镜像…。
在 推送镜像 对话框中,选择您的注册表,指定镜像的存储库名称和标签,然后点击 确定。
一旦 Docker 将镜像推送到注册表,任何有权限访问该镜像的人都可以拉取它并从中运行容器。 您可以确信,您会在 Dockerfile 中设置的特定运行时版本上运行您的应用程序的确切版本。