📜  Dockerizing 一个简单的 Node.js 应用程序(1)

📅  最后修改于: 2023-12-03 15:00:30.925000             🧑  作者: Mango

Dockerizing 一个简单的 Node.js 应用程序

介绍

Docker 是一个流行的开源容器解决方案,可帮助开发人员将应用程序与其依赖项打包在一起,形成一个可移植的容器,以便于快速部署到生产环境中。

在本文中,我们将学习如何使用 Docker 将一个简单的 Node.js 应用程序打包为容器镜像,以便于在任何环境中部署。我们将介绍 Dockerfile 文件的使用,以及如何从 Docker Hub 中获取已有的镜像。

步骤
1. 创建一个简单的 Node.js 应用程序

首先,我们需要创建一个简单的 Node.js 应用程序。

我们可以在命令行中输入以下命令来创建一个名为 example-app 的新项目:

$ mkdir example-app
$ cd example-app
$ npm init

该命令将引导我们完成创建新项目的基础设置,并生成一个 package.json 文件。我们需要修改 package.json 文件,将 start 脚本的值设置为 node index.js。假设我们的应用程序代码在 index.js 文件中。修改后的 package.json 文件如下所示:

{
  "name": "example-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

我们还需要编写一个简单的应用程序代码,如下所示:

// index.js
const http = require('http');

const hostname = '0.0.0.0';
const port = 8080;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, world!\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

以上代码创建了一个简单的 HTTP 服务器,响应任何请求并输出 "Hello, world!" 字符串。

2. 创建 Dockerfile 文件

接下来,我们需要创建一个 Dockerfile 文件,以便使用 Docker 打包我们的应用程序。

Dockerfile 文件是一个文本文件,在文件中定义了构建 Docker 镜像所需的步骤和指令。

在项目根目录下,创建一个名为 Dockerfile 的新文件,并添加以下内容:

# 基于 Node.js 的镜像,包含了 Node.js 环境和依赖项
FROM node:14

# 创建并设置当前工作目录
WORKDIR /usr/src/app

# 将应用程序代码复制到容器中
COPY . .

# 安装 Node.js 应用程序的依赖项
RUN npm install

# 默认的启动命令
CMD [ "npm", "start" ]

该 Dockerfile 文件定义了四个步骤:

  1. 使用 FROM node:14 指令,选择 Node.js 14 作为基础镜像。
  2. 使用 WORKDIR 指令,创建并设置当前工作目录 /usr/src/app
  3. 使用 COPY 指令,将应用程序的代码复制到容器中的 /usr/src/app 目录下。
  4. 使用 RUN 指令,运行 npm install 命令安装 Node.js 应用程序的依赖项。
3. 构建 Docker 镜像

现在,我们可以使用 Dockerfile 文件构建我们的容器镜像。

在命令行中进入项目根目录,运行以下命令:

$ docker build -t example-app .

该命令会使用当前目录下的 Dockerfile 文件构建一个名为 example-app 的新容器镜像。注意,example-app 是镜像的名称,由 -t 参数指定, . 表示使用当前目录作为上下文构建 Docker 镜像。

4. 运行 Docker 容器

现在,我们已经成功地创建了一个 Docker 容器镜像,接下来我们将运行这个镜像。

在命令行中,输入以下命令:

$ docker run -p 8080:8080 example-app

该命令指示 Docker 运行 example-app 镜像,并将宿主机的 8080 端口映射到容器内部的 8080 端口。

现在,在浏览器中打开 http://localhost:8080,我们将能够看到响应了 "Hello, world!" 的页面。

结论

在本文中,我们学习了如何使用 Docker 将一个简单的 Node.js 应用程序。我们学习了 Dockerfile 文件的使用,以及如何从 Docker Hub 中获取一个现成的镜像。使用 Docker,我们可以将应用程序和依赖项打包在一起,形成一个可移植的容器,以便于快速部署到生产环境中。