运维工程师实践:使用 PM2 和 Docker 发布 Node.js 应用

前言

Node.js 是一种非常流行的服务器端编程语言,它在 web 开发、后端服务和命令行应用等各个领域都有广泛的应用。在开发 Node.js 应用的过程中,我们面临着如何发布和部署应用的问题。本文旨在介绍如何使用 PM2 和 Docker 实现 Node.js 应用的发布工作,让运维工程师更好地掌握 Node.js 应用的发布技能。

PM2 的介绍

PM2 是一个基于 Node.js 的进程管理器,可以帮助我们简化 Node.js 应用部署和管理的过程。它提供了许多有用的功能,例如:

  • 自动重启应用程序
  • 监控应用程序的 CPU 和内存占用情况
  • 支持分布式部署等等

在 Node.js 开发中,我们可以使用 PM2 来管理运行 Node 服务的进程,从而使 Node 服务具有更稳定、可靠和高效的特性。

Docker 的介绍

Docker 是一个开源的容器化技术,它可以将应用和运行环境打包成一个可移植的容器,从而使应用可以在不同的环境中运行。使用 Docker 有以下优点:

  • 可以隔离应用和运行环境,避免软件或硬件依赖的冲突。
  • 可以大幅缩短环境部署的时间,因为容器可以在多个环境中运行。
  • 可以快速搭建和配置多个环境,从而方便开发、测试和发布。

在本文中,我们将使用 Docker 来部署 Node.js 应用的运行环境。

使用 PM2 发布 Node.js 应用

首先,我们需要在本地机器上安装 Node.js 和 PM2。使用以下命令进行安装:

---- ------- ------
---- ------- ------- ------ ---
---- --- ------- --- --

以下是一个简单的 Node.js 应用程序的示例代码:

----- ---- - ----------------

----- ------ - ----------------------- ---- -- -
  -------------- - ----
  ----------------------------- --------------
  --------------- -----------
---

------------------- ---------- -- -- -
  ------------------- ------- -- -----------------------
---

接下来,我们可以使用 PM2 来启动该应用程序。首先,我们需要进入应用程序的根目录,然后运行以下命令:

--- ----- ------ ------ -----

此命令会使用 PM2 启动我们的应用程序,并将其命名为 myapp。我们可以使用以下命令查看应用程序的状态:

--- ----

我们还可以使用以下命令来管理应用程序:

--- ---- -----  - ------
--- ------- -----  - ------
--- ------ -----  - ------

使用 Docker 发布 Node.js 应用

Node.js 应用程序的 Docker 镜像通常会分为两个部分:应用程序和运行环境。我们首先需要创建一个 Dockerfile 来定义应用程序的 Docker 镜像。假设我们的应用程序代码位于 /usr/src/app 目录中,我们可以编写以下 Dockerfile:

- -- ------- --- ----- ------
---- -------

- ------
------- ------------

- -----------
---- - -

- ----
--- --- -------

- ----
------ ----

- ------
--- -------- ----------

- ------
--- - ------ ------- -

以上 Dockerfile 做了以下工作:

  • 基于 Node.js 官方的 image 创建一个 Docker 镜像。
  • 设置工作目录为 /usr/src/app,将应用程序复制到镜像中,并安装应用程序的依赖项。
  • 暴露应用程序的端口,设置 NODE_ENV 环境变量,并启动应用程序。

接下来,我们可以使用以下命令构建 Docker 镜像:

------ ----- -- --------- -

此命令会将当前目录中的所有文件打包成一个名为 myapp:1.0 的 Docker 镜像,并使用 Dockerfile 中的定义来构建该镜像。

最后,我们可以使用以下命令来运行该 Docker 镜像:

------ --- -- --------- -- ---------

此命令会在后台运行 myapp:1.0 镜像,并将镜像的 8000 端口映射到本地机器的 8000 端口上,从而使我们可以通过浏览器访问该 Node.js 应用程序。

结论

本文介绍了如何使用 PM2 和 Docker 发布 Node.js 应用程序。通过使用 PM2,我们可以更好地管理 Node 服务的进程,从而使它们更稳定、可靠和高效。通过使用 Docker,我们可以将应用程序和运行环境打包成一个可移植的容器,从而简化了应用程序的部署和管理过程。希望本文能够帮助读者更好地掌握 Node.js 应用程序的发布技能。

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