首页 > 文章列表 > 在Docker容器中使用Java进行工作

在Docker容器中使用Java进行工作

java 容器 docker
492 2023-09-01

Java 是目前最流行的企业语言之一。它是面向对象编程的核心,并提供了构建企业级应用程序和测试平台的强大平台。对于新手来说,安装和适应 Java 环境最初可能需要一些时间。

Docker 容器允许您访问其中的 Java 运行时环境,从而提供一个易于管理的已安装库的打包环境。如果您在本地计算机上安装了 Docker,则无需运行 Java 应用程序并经历所有繁琐的工作,您可以通过直接通过 Docker 注册表拉取 Java 映像来轻松构建 Java 映像,并可以直接在容器提供的环境中运行 Java 应用程序通过简单易行的步骤。

在本文中,我们将讨论在 Docker 容器内运行 Java 应用程序所需遵循的所有步骤。在 Docker 容器内使用和运行 java 应用程序有两种主要方法。

  • 您可以创建和构建自定义映像并使用 apt-get 命令安装 java通过在 dockerfile 中单独指定它们。

  • 您可以直接从 Docker 注册表中拉取官方 Java 镜像,并直接在其中运行您的 Java 应用程序。

我们将使用更简单的方法,即第二种方法。让我们逐步完成该过程。

创建构建上下文来存储 dockerfile 和 Java 应用程序

首先,您需要创建一个 docker 构建上下文,其中包含您的dockerfile 和 Java 应用程序。

mkdir my−java−app

创建 Java 应用程序

您可以在扩展名为 .java 的文件中创建简单的 Java 应用程序。请参阅下面的代码片段,该代码片段存储在我们在上述步骤中创建的“my−java−app”目录中名为“tutorialspoint.java”的文件中

import java.utils.*;

class Main{
   public static void main(String args[]){
      System.out.println("Welcome to TutorialsPoint");
   }
}

创建一个 Dockerfile 来构建镜像

创建一个名为“dockerfile”的文件。将以下说明包含在文件中,并将其保存在已包含 java 应用程序的“my−java−app”目录中。

#Pull the Java base image
FROM java:8

#Set the working directory
WORKDIR /var/www/java

#Copy the build context
COPY . /var/www/java

#Compile the Java application
RUN javac tutorialspoint.java

#Run the executable
CMD ["java", "Hello"]

上面的 dockerfile 指定了创建 java 映像并在与该映像关联的 Docker 容器内运行我们的应用程序所需的所有指令。它从 Docker 注册表中提取 Java 版本 8 映像并设置工作目录。然后它复制包含我们的 Java 应用程序的 Docker 构建上下文。然后它使用 javac 命令编译 java 应用程序,最后使用 CMD 命令运行编译后创建的可执行文件。

构建 Docker 映像

创建 dockerfile 后,您可以使用以下构建命令使用它来构建您的 docker 映像。

sudo docker build −t <image−name> .

执行上述命令后,它将成功构建 Docker 映像。

运行 Docker 容器

您现在可以使用 Docker run 命令来创建与上图并在 Docker 容器内运行您的 Java 应用程序。

sudo docker run <image−name>

总而言之,创建一个完美的 Java 运行时环境来执行所有 Java 应用程序可能是一项艰巨的任务。值得庆幸的是,Docker 提供了预构建的 Java 镜像,您可以轻松地从 Docker 注册表中提取这些镜像,并立即开始构建您的 Java 应用程序。您还可以扩展它来创建 Spring 环境和所有其他 Java 企业平台,并且可以大规模处理 Java 应用程序。 Docker 容器提供了一个包含的环境来管理您的所有应用程序,而无需担心版本控制、项目管理、资源管理等。

在本文中,我们讨论了如何从 Docker 中拉取官方 Java 镜像注册表,创建了一个 Dockerfile 来运行我们的 Java 应用程序,使用 Docker 构建和运行命令来构建映像,编译并执行应用程序。