使用 Docker 和 Nginx 搭建 Node.js 应用

使用 Docker 和 Nginx 搭建 Node.js 应用

在现代 Web 应用开发中,Docker 已经成为了一个必要的工具。Docker 是一个容器化技术,可以将整个应用程序打包到一个可移植的容器中,这个容器包括了应用程序的所有依赖和运行环境,这极大地简化了部署过程。同时,使用 Docker 还可以轻松地扩展应用程序的规模,更容易地管理应用程序。

本文将介绍如何使用 Docker 和 Nginx 来搭建 Node.js 应用,以及如何使用 Docker Hub 来分发应用程序容器。本文将从头开始搭建一个简单的 Web 应用程序,并使用 Docker 和 Nginx 部署它。

Node.js 应用程序

我们将使用一个简单的 Node.js 应用程序作为示例,它可以将输入的文本转换成小写并返回结果。这个应用程序使用 Express 框架和 body-parser 中间件,这些依赖可以在应用程序运行时自动安装。

下面是这个应用程序的源代码:

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

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

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

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

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

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

我们将这个应用程序保存在一个名为 app.js 的文件中,并在本地运行。

Dockerfile

接下来,我们将创建一个 Dockerfile,Dockerfile 是用于构建 Docker 镜像的文件。Docker 镜像是一个可移植的容器,包含了应用程序的所有依赖和运行环境。

我们将使用 Node.js 官方镜像作为基础,这个镜像已经包含了 Node.js 运行环境。我们将在这个基础上添加我们的应用程序和其他依赖。

下面是 Dockerfile 的内容:

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

------- ----

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

---- - -

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

这个 Dockerfile 中,我们首先从 Node.js 官方镜像开始构建我们自己的镜像。接着,我们设置工作目录为 /app,将 package.json 和 package-lock.json 复制到工作目录中,并且运行 npm install 安装所有必须的依赖(--production 参数表示只安装生产环境依赖)。

接着,我们将复制所有文件到工作目录中,设置应用程序监听的端口为 3000,并且命令 npm start 用于启动应用程序。

Nginx 配置

我们将使用 Nginx 作为反向代理服务器,将客户端请求转发到 Node.js 应用程序。我们将使用 Docker Compose 来启动 Nginx 和 Node.js 应用程序,这样它们可以相互连接。

下面是 Nginx 的配置文件内容:

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

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

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

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

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

这个 Nginx 配置文件中,我们设置了一个 server 块,监听在 80 端口上。 location / 用于指定应用程序的根路由,并且将客户端请求转发到 http://node:3000/ 上,其中 node 是 Docker Compose 中 Node.js 服务的名称。

使用 Docker Compose 部署应用程序

现在,我们已经准备好部署我们的应用程序了。我们将使用 Docker Compose 来启动 Nginx 和 Node.js 应用程序,这样它们可以相互连接。

下面是 docker-compose.yml 文件的内容:

-------- ---

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

在这个 docker-compose.yml 文件中,我们定义了两个服务:nginx 和 node。nginx 服务使用最新的 nginx 镜像,将 80 端口映射到主机的 80 端口上,并使用本地的 nginx/nginx.conf 文件作为配置文件。

node 服务使用当前目录下的 Dockerfile 构建镜像,并且使用默认的名称 node,这个名称将用于 Nginx 的配置文件中。

现在我们可以使用 docker-compose up 启动所有的服务了。运行以下命令:

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

在启动完毕后,我们可以使用浏览器访问 http://localhost,将输入的文本转换为小写。如果一切正常,您应该能够看到转换后的文本。

Docker Hub

如果您想要将应用程序容器分发到 Docker Hub 上,让其他人可以快速地部署应用程序,可以按照以下步骤操作:

  1. 在 Docker Hub 上创建一个新的仓库。

  2. 在本地使用 docker login 命令登录到 Docker Hub。

  3. 在 Dockerfile 目录下运行以下命令构建 Docker 镜像:

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

    这个命令将使用 your-username/node-app 名称来构建 Docker 镜像。

  4. 运行以下命令将 Docker 镜像推送到 Docker Hub 上:

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

现在,其他人可以通过运行以下命令拉取您的应用程序容器:

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

结论

在本文中,我们通过使用 Docker 和 Nginx 来搭建 Node.js 应用程序,将客户端请求转发到 Node.js 应用程序上。我们还学习了如何使用 Docker Hub 来分发应用程序容器。这个过程简化了应用程序的部署和扩展,提高了开发效率,让您可以专注于应用程序的实现。

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