IntelliJ IDEA 2025.2 Help

将 Java 应用程序容器化

您可以使用 Docker 将编译后的 Java 应用程序与特定的运行环境和其他必要的依赖项一起打包成镜像。 然后,您可以从该镜像运行一个容器,以查看该应用程序在此环境中的运行情况。 这是将应用程序 dockerizing

本教程介绍如何创建一个 Dockerfile 以使用 OpenJDK 17 和编译后的 Java 应用程序构建 Docker 镜像。 此外,它还展示如何与他人共享此镜像并从中运行一个 Docker 容器。

创建一个新的 Java 项目

本教程的示例应用程序将由一个 HelloWorld.java 文件组成,该文件将在控制台中打印 Hello, World! 并退出。

  1. 在主菜单中,前往 文件(F) | 新建(N) | 项目

  2. 新建项目 向导中,从左侧列表中选择 Java

  3. 新建项目 对话框中,将项目命名为 DockerHelloWorld

    新建 Java 项目
  4. 目录中创建主 Java 类文件 HelloWorld.java

    要执行此操作,请在 项目 工具窗口中,右键点击 目录,指向 新建 并点击 Java 类。 在 新建Java 类/文件 对话框中,输入 HelloWorld 并按 Enter

    将以下代码粘贴到新文件中:

    public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
  5. 尝试编译并运行应用程序。

    点击 运行边栏图标 中的标记并选择 运行 'HelloWorld.main()'

    您应当会看到 Hello, World! 打印到 运行 工具窗口的控制台。

    在本地运行新的 Java 应用程序

默认情况下,IntelliJ IDEA 会将输出编译到项目目录下的 HelloWorld.class 文件中,位于 /out/production/DockerHelloWorld/ 中,这里的 DockerHelloWorld 是当前模块的名称。

创建 Dockerfile

  1. 项目 工具窗口中,右键点击项目名称,指向 新建 并点击 文件

  2. 新建文件… 对话框中,输入 Dockerfile 并按 Enter

  3. 请将以下代码粘贴到新的 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 上运行图标 并选择 在 'Docker' 上运行

IntelliJ IDEA 创建一个 Dockerfile 运行配置 ,该配置从 Dockerfile 构建一个镜像,然后基于该镜像运行一个容器。 要查看整个过程,请在 日志 选项卡中打开 服务 工具窗口。

Docker 日志

您可以与他人分享此图像,例如,无需安装必要的运行时(仅需要 Docker),即可准确展示您的应用程序预期的运行方式。

将您的 Java 应用程序作为 Docker 映像共享

  1. 服务 工具窗口中,找到从 Dockerfile 构建的映像。

    默认情况下,它由唯一的镜像 ID 指定,因为在创建镜像时未提供镜像标签。 您可以编辑相应的运行配置,指定您选择的镜像标签,然后再次运行该配置。

    要查找图像,右键点击正在运行的容器,然后选择 镜像 | 显示镜像

    显示用于运行 Docker 容器的图像
  2. 右键点击具有所需 ID 的图像,然后点击上下文菜单中的 推送镜像…

  3. 推送镜像 对话框中,选择您的注册表,指定镜像的存储库名称和标签,然后点击 确定

一旦 Docker 将镜像推送到注册表,任何有权限访问该镜像的人都可以拉取它并从中运行容器。 您可以确信,您会在 Dockerfile 中设置的特定运行时版本上运行您的应用程序的确切版本。

最后修改日期: 2025年 9月 22日