Docker:在容器中运行Java应用程序
您可以使用Docker在特定的运行时环境中运行容器中的Java应用程序。本教程介绍如何创建Dockerfile,以便在OpenJDK 8的容器中运行简单的Java应用程序。
示例应用程序由一个Main.java文件组成,该文件打印Hello World!到控制台并退出。编译输出位于/out/production/DockerJavaApp下的项目目录中。
在容器中运行Java应用程序
- 在项目工具窗口中,右键单击项目名称,指向“新建(New)”并单击“文件(File)”。
- 在“新建文件(New File)”对话框中,键入
Dockerfile
并单击“确定”。 -
在新的Dockerfile中键入以下内容:
FROM openjdk:8 COPY ./out/production/DockerJavaApp/ /tmp WORKDIR /tmp ENTRYPOINT ["java","Main"]
- 单击“运行Docker(Run on Docker)”阴影图标(
),然后单击“'Docker'上的运行(Run on 'Docker')”。
IntelliJ IDEA创建一个Docker运行配置,它从Dockerfile构建一个映像,然后根据该映像运行一个容器。输出目录(Main.class)的内容被复制到容器中的/tmp目录中。然后它从/tmp目录中运行该
java Main
命令。因此,您应该看到Hello World!
打印到容器日志。
例如,您可以与其他人分享图像,以准确演示您的应用程序如何运行,而无需安装必要的运行时(仅需要Docker)。
要共享构建的图像,您需要配置一个Docker注册表 ,您可以在其中拥有图像推送权限。例如,您可以在Docker Hub上创建一个帐户, 并使用公共或私人存储库共享图像,或设置您自己的Docker注册表。
将您的Java应用程序作为Docker镜像共享
- 在Docker工具窗口中,找到从Dockerfile构建的图像。默认情况下,它由唯一图像ID指定,因为未提供图像标记。您可以编辑相应的运行配置并指定您选择的图像标签。要找出图像ID,请选择您从Dockerfile运行的容器并打开“属性(Properties)”选项卡。
- 右键单击具有所需ID的图像,然后在上下文菜单中单击“推送图像(Push Image)”。
- 在“推送图像(Push Image)”对话框中,选择您的注册表,指定图像的存储库名称和标记,然后单击“确定”。
一旦图像被推送到注册表中,任何有权访问的人都可以将其拉出并从图像中运行一个容器。