发布于 2026-01-06 0 阅读
0

Docker:Node.js 和 MongoDB 服务

Docker:Node.js 和 MongoDB 服务

大家好,这篇文章是我之前关于 Docker 文章的续篇。点击链接即可查看前文:
Docker 的进阶与导出
、Docker 化 Node.js 应用

包含

要跟随本教程操作,您必须安装 Docker 和 Node.js。


今天,我们将学习如何部署两项服务NodeJs app with MongoDb

在这里找到源代码

议程

🎯 Node 项目搭建
🎯 Docker 搭建
🎯 文件夹结构
🎯 代码分解


启动项目

npm init -y


安装依赖项

npm i express dotenv mongoose


package.json

图片描述


Docker 设置

要拉取 Node 和 MongoDB 镜像,请访问 Docker Hub 并获取官方镜像。确保 Docker 服务已启动。点击
Docker Desktop 以激活服务。

要检查 Docker 是否已安装在您的机器上,请docker --version在终端中运行以下命令。
图片描述


拉取节点镜像

图片描述


拉取 MongoDB 镜像

图片描述


检查 Docker 镜像

docker 镜像 ls


文件夹结构

这是我们最基本的文件夹结构。
图片描述


代码分解

🐋 数据库设置

图片描述
在这个配置文件夹中,我们导入了 mongoose 模块,连接到了我们的数据库,并导出了配置。

⚠️ 注意:

  1. docker-node-mongo可以被命名为任何名字。
  2. 请注意mongo:27017/docker-node-mongo,它替换了localhost我们在开发模式下使用的。

🐋 模型和模式

图片描述
这里我们导入 mongoose 库并为用户创建一个新的模式。


🐋 路线

图片描述
我们编写业务逻辑并导出 Express 路由,然后将其挂载到主入口文件中。app.js


🐋 .env

图片描述


🐋 app.js
const express = require('express');
const dotenv = require('dotenv');
dotenv.config();
const connectDb = require('./config/db');

const app = express();

connectDb();
const port = process.env.NODE_LOCAL_PORT || 3020;

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.get('/', (req, res) => {
  res.send('Hello World');
});

app.use('/', require('./routes/user'));

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
Enter fullscreen mode Exit fullscreen mode

现在,让我们在本地运行以下命令来测试我们的应用程序:
npm start
图片描述

接下来,我们运行以下命令停止服务器Ctrl + C


Docker 文件

图片描述

第一行是我们想要使用的基础图像。

WORKDIR 命令用于设置容器的工作目录。

我们将 package.json 文件复制到当前目录。
然后安装依赖项。

COPY 命令将当前目录的内容复制到 Dockerfile 的上下文中。

EXPOSE 命令用于将端口暴露给外部世界。

CMD 指令用于指定运行时要运行的命令。


⚠️ 我们实际上可以使用这个 Dockerfile 来构建这个镜像,只需运行类似这样的构建命令docker build -t [name of container],然后运行即可,docker run -p 8082:8082 [image name] ...但这将无法连接到 MongoDB 服务。为了能够运行这两个服务,我们需要一个docker-compose.yml文件。


Docker Compose 文件

图片描述
最后,我们为应用程序和 MongoDB 服务配置了 docker-compose.yml 文件。该文件帮助我们构建 Node.js 应用程序并将其链接到 MongoDB 镜像。

测试

为了进行测试,我们运行以下命令:
docker-compose up -d

-d标志表示我们正在以分离模式运行容器。
图片描述


检查正在运行的容器

图片描述

我们看到两个集装箱都已启动并运行。

我们打开浏览器。
图片描述


测试邮政路线。

图片描述


让我们使用docker exec命令检查我们创建的用户。
检查正在运行的容器。
图片描述

进入 MongoDB 容器
图片描述

图片描述


结论

希望这篇文章对您有所帮助。如果您在学习过程中遇到任何问题,请点击上面的链接查看源代码。


参考

Traversy Media,Docker 与 Mongo

文章来源:https://dev.to/drsimplegraffiti/docker-with-mongodb-57g8