Docker 搭建 node.js 应用容器

目录:

  1. 前言
  2. Docker 概述
  3. Node.js 介绍
  4. 使用 Docker 容器搭建 Node.js 应用
  5. 总结

1. 前言

随着云计算技术的发展,使用容器技术来部署应用程序成为一种趋势。Docker 作为一种开源的应用容器引擎,为应用的部署、测试、运行带来了更多便利。

本篇文章将介绍 Docker 容器和 Node.js 技术的基本概念及其在一起使用的方法,并且提供一些代码示例。

2. Docker 概述

Docker 是一种应用容器引擎,可以提供一个容器来封装应用程序及其依赖项,并保证应用程序可以在不同的环境中快速、可靠地部署和运行。

Docker 技术的核心是使用 Linux 容器技术来隔离进程,使得在同一台机器上运行的应用程序不会互相干扰。此外,Docker 还提供了一组工具,使得容器化的应用程序更加易于管理和维护。

3. Node.js 介绍

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可以让 JavaScript 代码脱离浏览器,以服务器端的形式运行。Node.js 极其适合处理大量的高并发请求,因此被广泛地应用于 Web 开发和云计算领域。

Node.js 与 Docker 的结合,使得开发人员可以更加方便地进行应用程序的打包、部署和维护。

4. 使用 Docker 容器搭建 Node.js 应用

接下来,我们将一步步介绍如何使用 Docker 容器来搭建一个 Node.js 应用。

4.1. 安装 Docker

在开始之前,先要安装 Docker。你可以在 Docker 官网上下载适合自己系统的 Docker 安装包,具体安装方法可以参考 Docker 官方文档。

4.2. 编写 Node.js 应用程序

我们需要先编写一个简单的 Node.js 应用程序,我们来编写一个简单的 Hello World 应用程序。

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

const hostname = '0.0.0.0';
const port = 3000;

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}/`);
});

这是一个最简单的 Node.js 应用程序,在 app.js 中定义了一个 HTTP 服务器,在访问 http://0.0.0.0:3000/ 时会返回一个 Hello World

4.3. Dockerfile 文件编写

构建 Docker 容器需要一个名为 Dockerfile 的文件,该文件描述了 Docker 构建容器的步骤。在编写 Dockerfile 文件时,我们需要指定一个基础镜像(由其他开发人员构建好的一个 Docker 镜像),然后在这个基础镜像上进行扩展。

# Dockerfile

# 使用 node:v12-alpine 作为基础镜像
FROM node:12-alpine

# 将 /app 目录作为工作目录
WORKDIR /app

# 将当前目录下的文件拷贝到工作目录中
COPY . /app

# 安装生产环境所需的依赖项
RUN npm install --only=production

# 将容器的 3000 端口暴露出来,供外界访问
EXPOSE 3000

# 定义启动 Node.js 应用的命令,CMD 这个命令会在容器启动时执行
CMD [ "npm", "start" ]

这个 Dockerfile 的意义是:

  • FROM node:12-alpine 表示以 node:12-alpine 作为基础镜像。
  • WORKDIR /app 表示将 /app 目录作为工作目录。
  • COPY . /app 表示将当前目录下的所有文件拷贝到容器的 /app 目录中。
  • RUN npm install --only=production 表示在容器中执行 npm install 命令。
  • EXPOSE 3000 表示将容器的 3000 端口暴露出来,这样就可以在主机上访问容器内的应用了。
  • CMD [ "npm", "start" ] 表示在容器启动时执行 npm start 命令。

4.4. 构建 Docker 镜像

编写好 Dockerfile 文件之后,我们可以使用 docker build 命令来构建 Docker 镜像,-t 参数可以指定镜像的名称及版本号,最后的 . 表示将当前目录作为构建上下文。

$ docker build -t my-node-app:v1 .

这个命令会将 Dockerfile 中的指令一条一条地执行,生成一个名为 my-node-app:v1 的 Docker 镜像。

4.5. 运行 Docker 容器

构建好 Docker 镜像之后,我们可以使用该镜像来运行容器:

$ docker run -p 3000:3000 --name my-node-app my-node-app:v1

这个命令做了以下几件事情:

  • docker run 命令将镜像启动为容器。
  • -p 3000:3000 表示将容器的 3000 端口映射到主机的 3000 端口。
  • --name my-node-app 表示容器的名称为 my-node-app
  • my-node-app:v1 表示要以名为 my-node-app:v1 的 Docker 镜像为基础来创建容器。

现在,我们可以通过 http://localhost:3000 来访问 Node.js 应用。

4.6. 停止和重启容器

如果我们想要停止容器或者重新启动容器,可以使用以下命令:

# 停止容器
$ docker stop my-node-app

# 重启容器
$ docker start my-node-app

4.7. 删除容器

当你不再需要某个容器时,可以使用以下命令删除它:

$ docker rm my-node-app

4.8. 删除镜像

当你不再需要某个 Docker 镜像时,可以使用以下命令删除它:

$ docker rmi my-node-app:v1

5. 总结

本篇文章介绍了 Docker 容器和 Node.js 技术的基本概念以及它们的结合使用方法,并附上了一些代码示例。

Docker 的容器化编程方式不仅可以提高应用程序的可移植性和可扩展性,同时也为开发人员和运维人员带来了更加便利且高效的工作方式。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a0a0f6add4f0e0ff8e2b15


纠错反馈