Docker 构建 Node.js Web 应用案例

阅读时长 5 min read

前言

随着云计算和互联网技术的不断发展,Docker 已经成为了常用的容器化解决方案。Docker 能够让开发者可以将应用与所需的依赖一起打包进一个独立的容器中,并能够长时间地保持稳定运行。在这篇文章中,我们将利用 Docker 技术来构建一个 Node.js Web 应用,详细讲解 Docker 的使用方法,以及如何将应用发布到云端。

准备工作

在开始之前,我们需要先安装 Docker。可以通过 Docker 的官方网站或者 Docker 客户端来进行下载和安装。安装好之后,我们需要确认 Docker 是否能够正常工作,可以使用以下命令来测试:

如果可以正常输出 Docker 的版本信息,证明我们的 Docker 安装成功。

除此之外,我们还需要一个已经写好的 Node.js Web 应用,这里我们使用 Express 框架来创建一个简单的 Web 应用。以下是应用的代码:

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

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

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

Docker 构建

创建 Dockerfile

我们需要创建一个 Dockerfile 文件来给 Docker 提供构建应用所需的信息。Dockerfile 是一个文本文件,它包含一个应用的所有指令,包括所需的操作系统、应用程序、版本号以及其他配置。

在我们的应用文件夹中,创建一个名为 Dockerfile 的文件。Dockerfile 的内容如下:

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

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

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

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

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

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

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

代码中注释已足够详细,无需做过多解释。需要注意的是,在代码的最后我们使用了 CMD 指令来标记容器启动时需要运行的应用程序。这里我们需要修改为我们实际的应用程序名称。

构建 Docker 镜像

在 Dockerfile 文件所在目录中,运行以下命令来构建 Docker 镜像:

-t 用于给镜像取一个名字,这里我们取名为 my-node-app。注意这里的点号(.)表示当前目录,如果我们想要构建其他目录的 Dockerfile 文件,可以在点号后面输入指定路径。

构建成功之后,我们可以使用以下命令来查看镜像列表:

找到自己构建的镜像,并记录其 IMAGE ID,后面启动容器时需要用到。

Docker 运行

容器化应用

我们已经构建好了镜像,并且准备运行一个容器来运行我们的应用。运行以下命令来启动容器:

-p 用于指定端口映射,这里我们将应用运行的 3000 端口映射到我们的本地 3000 端口。my-node-app 是我们构建的应用镜像名称。

容器启动之后,我们可以通过访问 http://localhost:3000 来查看我们的应用已经成功运行。

容器外访问应用

我们已经将本地的端口映射到了容器中的应用,但是如何将容器中的应用发布到云端并让其他人可以访问它呢?

云端运行 Docker 的方式和本地是一样的,所以我们只需要将 Docker 镜像发布到云端的 Docker Registry 上,然后在云端的服务器上启动容器即可。

可以使用 Docker Hub 来作为我们的 Docker Registry。首先需要在 Docker Hub 上注册账号,然后可以运行以下命令来登录:

输入账号和密码,登录成功之后,我们需要给我们的镜像打上 Docker Hub 的标记。可以运行以下命令:

这里的 DockerID 是我们在 Docker Hub 上的账户名。然后可以运行以下命令来将镜像发布到 Docker Hub:

发布成功之后,我们可以在 Docker Hub 上看到我们刚刚发布的镜像。

现在我们需要在云端服务器上运行容器。由于这里的配置因人而异,这里只给出最简单的运行命令:

其中 -d 参数表示以守护进程的方式运行容器,并将容器的 3000 端口映射到云端服务器的 80 端口。

到此为止,我们已经成功地将 Node.js Web 应用容器化,并且将其发布到了 Docker Hub 上并在云端服务器上启动。这是一个简单而有实际意义的案例,相信这篇文章能够帮助你快速上手 Docker 的使用。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67cffbd9e46428fe9ec609fb

Feed
back