发布者认证信息(营业执照和身份证)未完善,请登录后完善信息登录
 终于知道云计算核心技术Docker教程:为Java镜像创建一个 Dockerfile - 客集网
Hi,你好,欢迎来到客集网
  • 产品
  • 求购
  • 公司
  • 展会
  • 招商
  • 资讯
  • 解梦
当前位置: 首页 » 资讯 » 社会财经 找商家、找信息优选VIP,安全更可靠!
终于知道云计算核心技术Docker教程:为Java镜像创建一个 Dockerfile
发布日期:2023-02-27 02:09:43  浏览次数:9

Dockerfile 是一个文本文档,其中包含组装 Docker 映像的说明。当我们通过执行docker build 命令告诉 Docker 构建我们的镜像时,Docker 会读取这些指令,执行它们,并因此创建一个 Docker 镜像。

让我们来看看为我们的应用程序创建 Dockerfile 的过程。在项目的根目录中,创建一个名为的文件Dockerfile并在文本编辑器中打开该文件。

添加到 Dockerfile 的第一行是# syntax解析器指令。虽然是可选的,但该指令指示 Docker 构建器在解析 Dockerfile 时使用什么语法,并允许启用 BuildKit 的旧 Docker 版本在开始构建之前升级解析器。解析器指令 必须出现在 Dockerfile 中的任何其他注释、空格或 Dockerfile 指令之前,并且应该是 Dockerfiles 的第一行。

# syntax=docker/dockerfile:1

我们建议使用docker/dockerfile:1,它始终指向版本 1 语法的最新版本。BuildKit 在构建之前会自动检查语法的更新,确保您使用的是最新版本。

接下来,我们需要在我们的 Dockerfile 中添加一行,告诉 Docker 我们希望为我们的应用程序使用什么基础镜像。

# syntax=docker/dockerfile:1

FROM openjdk:16-

Docker 镜像可以从其他镜像继承。在本指南中,我们使用openjdk来自 Docker Hub的官方镜像和 Java JDK,它已经拥有运行 Java 应用程序所需的所有工具和包。

为了在运行其余命令时更轻松,让我们设置图像的工作目录。这会指示 Docker 使用此路径作为所有后续命令的默认位置。通过这样做,我们不必输入完整的文件路径,而是可以使用基于工作目录的相对路径。

WORKDIR /app

通常,一旦您下载了使用 Maven 进行项目管理的 Java 编写的项目,您要做的第一件事就是安装依赖项。

在我们可以运行之前mvnw dependency,我们需要将 Maven 包装器和我们的 文件放入我们的图像中。我们将使用该COPY命令来执行此操作。该 COPY命令有两个参数。第一个参数告诉 Docker 您想要复制到镜像中的文件。第二个参数告诉 Docker 您希望将该文件复制到何处。我们将所有这些文件和目录复制到我们的工作目录 - /app.

COPY .mvn/ .mvn

COPY mvnw ./

一旦我们在图像中拥有我们的文件,我们就可以使用RUN命令来执行命令mvnw dependency:go-offline。这与我们在本地机器上运行mvnw(或mvn)依赖项的方式完全相同,但这次依赖项将安装到映像中。

RUN ./mvnw dependency:go-offline

此时,我们有一个基于 OpenJDK 16 版的 Alpine 版镜像,并且我们还安装了我们的依赖项。我们需要做的下一件事是将我们的源代码添加到图像中。我们将COPY像使用上面的文件一样使用该命令。

COPY src ./src

此COPY命令获取位于当前目录中的所有文件并将它们复制到映像中。现在,我们要做的就是告诉 Docker 当我们的镜像在容器内执行时我们想要运行什么命令。我们使用CMD命令来执行此操作。

CMD ["./mvnw", "spring-boot:run"]

这是完整的 Dockerfile。

# syntax=docker/dockerfile:1

FROM openjdk:16-

WORKDIR /app

COPY .mvn/ .mvn

COPY mvnw ./

RUN ./mvnw dependency:go-offline

COPY src ./src

CMD ["./mvnw", "spring-boot:run"]

VIP企业最新发布
最新VIP企业
背景开启

客集网是一个开放的平台,信息全部为用户自行注册发布!并不代表本网赞同其观点或证实其内容的真实性,需用户自行承担信息的真实性,图片及其他资源的版权责任! 本站不承担此类作品侵权行为的直接责任及连带责任。

如若本网有任何内容侵犯您的权益,请联系 QQ: 1130861724

网站首页 | 信息删除 | 付款方式 | 关于我们 | 联系方式 | 使用协议 | 版权隐私 | 网站地图 (c)2014-2024 Rights Reserved 鄂公网安备42018502007153 SITEMAPS 联系我们 | 鄂ICP备14015623号-21

返回顶部