Node.js 如何创建Dockerfile
Dockerfile是一个文本文档,其中包含用户可以在命令行上调用的所有命令,以组装镜像。它类似于一个将多个命令集合在一个文档中以完成单个任务的shell脚本。
先决条件 :在Dockerize任何应用程序之前,您需要根据操作系统安装Docker Engine。请前往https://docs.docker.com/engine/install/以安装Docker Engine,并根据您的操作系统下载它。
命令 :编写Dockerfile时我们必须了解的基本命令。
- WORKDIR: 用于指定工作路径,即在镜像文件中,我们当前位于/app
- COPY: 用于将项目中的文件复制到镜像文件中。
- RUN: 现在有了Node.js环境的镜像文件,以及package.json档案,我们可以执行npm install来安装所有工具的依赖项,并将它们打包到镜像文件中
- EXPOSE: 在使用容器时,您可以将其想象为一台封闭的机器,因此我们需要设置与外部的通信通道。在这里,我们设置了端口8081,这是我们常用的端口。
- CMD: 用于设置启动镜像的方式。
- PULL: 用于从Docker资源库中添加文件。
- VOLUME: 用于创建一个目录挂载点,以访问和存储持久数据。
- ARG: 用于定义构建时的变量。
- DOCKER BUILD: 用于从Dockerfile创建镜像的构建命令。
- DOCKER PUSH: 用于将镜像推送到Docker资源库。
让我们通过创建一个简单的DockerFile并创建一个示例的Express应用程序来演示。
步骤1: 通过Express框架创建一个示例的Node.js应用程序。
步骤2: 让我们通过运行以下命令,将Express框架作为第一个依赖项添加进来。
步骤3: 我们可以创建一个名为 server_init.js 的文件,其中包含简单的HTTP服务器。
server_init.js
运行应用程序的步骤:
打开终端并输入以下命令。
在浏览器中访问http://localhost:8081/以查看它。
现在让我们为上述示例创建一个Dockerfile:
步骤1: 让我们继续在项目的根目录下创建一个Dockerfile,用于我们的演示应用。
步骤2: 打开 Dockerfile 文件并添加下面的步骤。每个 Dockerfile 文件必须以 FROM 指令开始。这是因为你需要一个起点来构建你的镜像。你可以从公共注册表中拉取任何有效的镜像来启动你的 Docker 镜像。你从中启动的镜像被称为基础镜像。在我们的情况下,让我们在 Dockerfile 中添加 FROM node:12.16-alpine。
步骤3: 在容器中创建目录,我们将使用该目录来存储文件、运行NPM和启动我们的应用程序:
步骤4: 通过以下命令安装所有 NodeJs 依赖项
步骤5: 在该应用示例中,我们将我们的Node.js应用程序运行在8081端口上。
步骤6: 通过以下命令启动我们的NodeJs应用程序。
步骤7: 构建Docker镜像。运行我们的应用程序的命令是:
步骤8: 我们可以找到我们创建的docker镜像。
使用以下命令来运行该应用程序
输出: 当我们运行写在Dockerfile中的Docker构建步骤时,将会执行。打开浏览器,访问localhost:8081。
将镜像推送到容器注册表: 我们可以将镜像推送到我们的公共或私有注册表。只需三个简单的步骤将镜像推送到Dockerhub。