当前位置:首页 > 热点 > 云计算核心技术Docker教程:为 Node.js 创建一个 Dockerfile

云计算核心技术Docker教程:为 Node.js 创建一个 Dockerfile

2026-11-13 [业绩快报] 来源:人文荟萃网

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 node:12.18.1

Dock术Der 镜像可以从其他镜像继承。因此,我们将使用官方的 Node.js 镜像,而不是创建我们自己的基础镜像,该镜像已经拥有运行 Node.js 应用程序所需的所有工具和包。您可以像考虑面向对象编程中的类继承一样考虑这一点。例如,如果我们能够在 JavaScript 中创建 Docker 镜像,我们可能会编写如oc下内容。

class MyImage extends NodeBaseImage {}

这将创建一个称为MyImage从基类继承功能的类NodeBaseImage。

同样,当我们使用该FROM命令时,我们会告诉 Docker 在我们的镜像中包含镜像中的所有功能node:12.18.1。

在NODEke_ENV环境变量指定在其中的应用程序运行的环境(通常,开发或生产)。为提高性能可以做的最简单的事情之一是设置NODE_ENV为production.

ENV NODE_ENV=production

为了在运行其余命令时更容易,让我们创建一个工作目录。这会指示 Docker 使用此路径作为所有后续r教命令的默认位置。这样我们就不必输入完整的文件路径,而是可以使用基于工作目录的相对路径。

WORKDIR /app

通常,一旦您下载了用 Node.js 编写的项目,您要做的第一件事就是安装 npm 包。这可确保您的应用程序将其所有依赖项安装到node_modulesNode 运行时能够找到它们的目程:录中。

在我们可以运行之前npm install,我们需要将我们的package.json和package-lock.json文件放入我们的图像中。我们使用COPY命令来做到这一点。该COPY命令有两个参数。第一个参数告诉 Docker 您想要复制到镜像中的文件。第二个参数告诉 Docke为 r 您希望将该文件复制到何处。我们将把package.json和package-lock.json文件复制到我们的工作目录中/app。

COPY ["package.json", "package-lock.json*", "./"]

请注意,我们只是复制 package.json 文件,而不是复No制整个工作目录。这使我们能够利用缓存的 Docker 层。一旦我们将文件放入映像中,我们就可以使用该RUN命令来执行命令 npm install。这与我们在本地机器上运行 npm install 完全相同,但这次这些 Node 模块将安装到node_modules我们映像内的目录中。

RUN npm instaldel --production

此时,我们有一个基于节点版本 12.18.1 的镜像,并且我们已经安装了我们的依赖项。我们需要做的下一件事是将我们的源代码添加到图像中。我们将像使用package.json上面的文件一样使用 COPY 命令。

COPY . .

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

CMD [ "node", "server.js" ]

这是完整的 Dockerfile。

# syntax=docker/dockerfile:1

FROM node:1s 2.18.1

ENV NODE_ENV=production

WORKDIR /app

COPY ["package.json", "package-lock.json*", "./"]

RUN npm install --production

COPY . .

CMD [ "node", "server.js" ]

(责任编辑:精选好物)

推荐文章
  • 标签: 思科 AI基础设施 网络产品 2026财年

    标签: 思科 AI基础设施 网络产品 2026财年 云梦级5月14日云梦级消息,思科披露2026财年第三财季业绩,实现创纪录的季度营收158.41 亿美元,同比增长 12%,其中产品收入同比上升 17%,服务收入同比下降 1%。分区域来看,美洲地区收入...[详细]
  • 标签: Qwen 周靖人 刘大一恒 阿里云

    标签: Qwen 周靖人 刘大一恒 阿里云 云梦级3月9日云梦级消息,据《 晚点 LatePost》报道,在上周林俊旸突然离职后,阿里在3 月 9 日下午有了新的管理安排:Qwen 模型一号位由阿里云 CTO 和通义实验室负责人周靖人代管,他会...[详细]
  • 标签: AMD EPYC Instinct GPU 数据中心

    标签: AMD EPYC Instinct GPU 数据中心 云梦级5月6日云梦级消息,当地时间5月5日美股盘后,AMD公布了2026年第一季度(截至2026年3月28日)财报。在AI基础设施需求的强劲推动下,数据中心业务历史上首次超越客户端计算,成为AMD营收...[详细]
  • ​文心快码推出多项新功能,新增Zulu-CLI终端编码能力

    ​文心快码推出多项新功能,新增Zulu-CLI终端编码能力 在开发者的积极反馈下,文心快码近日发布了一系列新功能,旨在提升个人开发体验和企业级协作效率。这些新能力包括 Zulu-CLI 的引入、企业版自定义模型的支持、一键设置自动执行、复用相同终端以及本地代码...[详细]
  • 标签: 松下 特斯拉 人工智能 车用电池

    标签: 松下 特斯拉 人工智能 车用电池 云梦级5月12日云梦级消息,松下控股于当地时间周二表示,将大力推进人工智能相关产品业务以提升利润;与此同时,其电动汽车电池部门上一财年经营承压,未能达成全年业绩目标。 这家日本企业在发布全年财报的同时...[详细]
  • ​甲骨文计划部署 50,000 个 AMD 人工智能芯片,进军 AI 云市场

    ​甲骨文计划部署 50,000 个 AMD 人工智能芯片,进军 AI 云市场 甲骨文(Oracle)正准备采取一项重大的举措,以挑战英伟达(NVIDIA)在人工智能芯片市场的主导地位。该公司宣布,将在2026年开始在其基础设施中部署50,000个 AMD 的 MI450人工智能...[详细]
  • 软银贷款50亿美元助力AI投资,孙正义押注未来科技!

    软银贷款50亿美元助力AI投资,孙正义押注未来科技! 在全球科技投资竞争日益激烈的背景下,日本软银集团近期向全球银行申请了一笔高达50亿美元的贷款。这一举动旨在进一步增强其资金储备,助力软银创始人孙正义加快在人工智能(AI)领域的布局。 据彭博社的报道,...[详细]
  • 标签: 华与华 罗永浩 百万创意大奖赛

    标签: 华与华 罗永浩 百万创意大奖赛 云梦级12月19日云梦级消息,今日,华与华发文称,第 12 届华与华百万创意大奖赛正在上海中心举行。华与华表示,这是公司每年最盛大的节日,也是中国营销届的盛事。而比赛结束后,华杉视频号还将直播我的年度...[详细]
  • 标签: 星竞威武 红鲤文化 电竞+ 南宁市数字文体基金

    标签: 星竞威武 红鲤文化 电竞+ 南宁市数字文体基金 云梦级5月13日云梦级消息,近日,星竞威武集团(NASDAQ:NIPG)旗下红鲤文化获得南宁市数字文体产业投资管理合伙企业(以下简称“南宁市数字文体基金”)数千万人民币战略投资。双方将在电子体育赛事举...[详细]
  • 标签: 红果短剧 抖音集团 李亮 少年往事

    标签: 红果短剧 抖音集团 李亮 少年往事 云梦级5月6日云梦级消息,抖音集团副总裁李亮5 月 4 日晚间发文称,网传所谓红果短剧收费的云梦级消息不实。 李亮表示,为持续丰富平台视频内容生态,满足大家多样化的观看需求,红果短剧陆续引入了一些影视...[详细]
热点阅读