在前端开发中,经常需要使用 Node.js 和 MongoDB 来搭建 web 应用程序。使用 Docker 能够更加高效地管理和部署这些技术栈,使开发和部署变得更加简单和快速。
本文将介绍如何使用 Docker 构建 Node.js 和 MongoDB 堆叠,并演示 Dockerfile 和 docker-compose.yml 的用法。
准备工作
为了完成这个教程,你需要:
- 安装 Docker
- 熟悉 Node.js 和 MongoDB 的基本操作
编写 Dockerfile 文件
Dockerfile 是一种用于构建 Docker 镜像的文件。首先,我们需要创建一个文件夹,然后在文件夹中创建 Dockerfile 文件,内容如下:
-- -------------------- ---- ------- - ----- ------- -- -------- ---- ------- - ---- --- ---------- ------- ---- - -- ------------ - ----------------- ---- ---- ------------- -- - ----- --- --- ------- - ---------- ---- - - - -- ---- ---------- --- ------ ---- - -- ------- -- --- ------- --------
构建镜像
现在我们已经有了 Dockerfile 文件,可以使用命令构建一个 Node.js 镜像:
docker build -t node-app:latest .
其中,-t
标志允许我们为镜像设置一个名称和一个可选的标记。:
后面的标记可以标记你的镜像的不同版本。这里我们使用 latest
。
.
用于告诉 Docker 使用当前目录作为构建上下文。Docker 将使用当前目录中的 Dockerfile 文件来构建镜像。
构建完成后,我们可以通过以下命令运行该节点应用程序:
docker run -p 3000:3000 node-app
其中,-p
标志将容器的 3000 端口绑定到主机的 3000 端口,以便我们可以在浏览器中访问它。
添加 MongoDB
现在我们已经有了运行 Node.js 服务器所需的 Docker 镜像,下一步是添加 MongoDB 操作。我们需要编写一个新的 Dockerfile 文件,并使用 docker-compose.yml 文件定义整个堆叠。
要开始,请在与上面的 Dockerfile 同级的目录中创建一个新的 docker-compose.yml 文件。
编写 Dockerfile 文件
我们需要从 MongoDB 官方镜像开始,它提供了启动 MongoDB 所需的所有软件。
# 使用官方的 MongoDB 4 镜像作为基础镜像 FROM mongo:4 # 复制初始化脚本到容器中 COPY init-mongo.js /docker-entrypoint-initdb.d/
这个脚本将在容器运行时执行,并创建一个名为 docker-compose-mongo
的数据库用于我们的应用程序。
编写 docker-compose.yml 文件
我们使用的是 docker-compose.yml 文件来定义我们的 Docker 堆叠,文件可以包含一个或多个服务的定义。对于我们的目的,我们将定义两个服务:一个 Node.js 服务和一个 MongoDB 服务。
-- -------------------- ---- ------- -------- ----- --------- --------- ------ - ------ - --------- ----------- - ----- ------------ ---------- ------------------------------------------ ------ ------ -------- - ----------- ------------------ -------- - ------------- -------- -----
version
指定使用的 Docker Compose 版本。node-app
定义了我们的 Node.js 服务。build
指定使用当前目录的 Dockerfile 文件构建该服务,ports
将容器的 3000 端口绑定到主机的 3000 端口。depends_on
表示该服务依赖于数据库服务。mongo
定义了我们的数据库服务,它使用另一个 Dockerfile 文件进行构建。volumes
中包含一个名为data
的卷,用于在本地文件系统和容器中存储数据。
运行 Docker 堆叠
我们现在已经有了一个 docker-compose.yml 文件,在所在目录下可以运行以下命令来启动整个堆栈:
docker-compose up
此命令构建、启动和链接整个堆栈中的所有服务。访问 http://localhost:3000
应该就可以看到 Node.js 服务在运行,并使用 MongoDB 存储数据。
总结
本文介绍了如何使用 Docker 构建 Node.js 和 MongoDB 堆叠。我们编写了 Dockerfile 文件、docker-compose.yml 文件,并使用命令构建整个堆栈。这一过程可以更高效地管理和部署我们的技术栈,使开发和部署变得更加简单和快速。
示例代码:GitHub
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c6a8f310032fedd38e9913