利用 Docker + Jenkins 打造高效的 Node.js 自动化部署

阅读时长 8 分钟读完

介绍

前端开发中,部署是一个不可避免的环节。传统的手动部署方式效率低,易出错,且不利于项目的持续迭代。近年来,Docker 和 Jenkins 等工具的出现带来了一种高效的自动化部署方式,本文将介绍如何利用 Docker 和 Jenkins 打造高效的 Node.js 自动化部署方案。

需求分析

自动化部署是基于代码的自动构建和发布流程。在 Node.js 项目中,我们需要对代码进行构建、打包和发布操作。具体而言,我们需要将代码克隆到服务器,进行构建和测试,然后启动应用。这些操作均可以通过脚本自动完成。Docker 可以通过容器化技术实现快速构建和发布应用。Jenkins 是一个流行的自动化构建工具,可以将每次代码提交触发自动构建和测试,并发布应用到服务器上。

技术分析

Docker 和 Jenkins 是本文实现自动化部署的关键技术。Docker 是目前非常流行的容器化技术,在部署应用时,可以大幅减小环境差异。本文将使用 Docker 镜像来部署 Node.js 应用。Jenkins 是一个流行的自动化构建工具,它支持多种编程语言的自动构建和测试,具有强大的插件扩展能力。

实现步骤

下面将介绍如何通过 Docker 和 Jenkins 实现自动化部署。

Docker 镜像构建

首先,我们需要构建一个 Docker 镜像。在项目的根目录下创建一个 Dockerfile 文件。

这个 Dockerfile 使用官方 Node.js 12.16.1 镜像为基础镜像,将工作目录设为 /usr/src/app,并将 package*.json 文件复制到工作目录下,运行 npm install 安装依赖,然后将当前目录下的所有文件复制到工作目录中。最后,设置容器对外暴露的端口为 3000,并在容器启动时运行 npm start 命令启动应用。

完成 Dockerfile 编写后,我们可以使用 docker build 命令构建镜像,在项目根目录下运行以下命令:

这个命令将会构建一个名为 my-node-app 的镜像,并指定其标签为 latest。

Jenkins 配置

接下来,我们需要在 Jenkins 中配置自动化构建流程。

安装插件

本文将使用 Jenkins 配合 Git 插件,实现通过每次代码提交触发自动化构建和部署。我们需要安装以下插件:

  • Git plugin:Jenkins 的 Git 插件,用于集成 Git 代码库。
  • Docker plugin:Jenkins 的 Docker 插件,用于容器构建和发布。
  • NodeJS Plugin:Jenkins 的 Node.js 插件,用于安装和管理 Node.js。

可以在 Jenkins 的插件管理页面中搜索并安装以上插件。

新建项目

在 Jenkins 中新建一个 Freestyle 项目,并配置 Git 代码库地址和构建触发器。我们选择 SCM Polling 触发器,并设置轮询频率为每分钟监测一次 Git 仓库的变化。

构建步骤配置

在构建步骤中,我们需要执行以下操作:

  1. 安装构建所需 Node.js 版本

    在 NodeJS 插件配置中指定 Node.js 版本即可。

  2. 安装依赖

    在执行构建命令之前,我们需要先安装项目的依赖。可以通过 Execute Shell 步骤执行以下命令:

  3. 构建 Docker 镜像

    执行以下构建 Docker 镜像的命令:

  4. 部署 Docker 容器

    在 Docker 插件中配置相关参数,执行以下命令:

    这个命令将会停止并删除之前的容器(如果存在),然后运行新的容器。

  5. 清理 Docker 容器

    如果您希望在构建时清理旧的 Docker 容器,可以在 Docker 插件配置中勾选 Remove Docker Container 选项。

操作演示

为了更好地演示本方案,我们将使用一个简单的 Node.js 应用程序。该应用程序使用 Express 创建了一个基本的 Web 服务器,并在 / 路由上输出一个简单的文本。

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

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

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

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

请注意,为了支持自动化构建,我们还需要将 package.json 文件中的启动命令修改为 npm start,如下所示:

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

首先,我们需要在本地安装 Docker 和 Jenkins。

然后,我们可以使用以下命令在本地启动 Jenkins:

现在,我们可以访问 http://localhost:8080 来打开 Jenkins,进行一系列配置,创建 Jenkins 作业,或者在 Jenkins 中导入一个简单的 pipline 脚本。以 pipline 方式为例,我们可以使用以下代码:

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

实现过程中,我们需要事先创建好包含 Dockerfile 文件和应用代码的 Git 仓库。对于 Jenkins 的 Docker Server 环境和 Registry 权限申请,可以参考 Docker 官方文档。

总结

本文介绍了如何利用 Docker 和 Jenkins 实现 Node.js 自动化部署,以及相关的详细实现步骤。通过 Docker 镜像化技术和 Jenkins 的自动化构建平台,可以大大提高前端项目的部署效率,且代码发布的过程中不必再为环境配置问题而头疼。在实际使用时,需要根据具体项目的需求和实际情况进行相应的调整和修改。

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

纠错
反馈