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 模块,连接到了我们的数据库,并导出了配置。
⚠️ 注意:
- 它
docker-node-mongo可以被命名为任何名字。 - 请注意
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}`);
});
现在,让我们在本地运行以下命令来测试我们的应用程序: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
检查正在运行的容器
我们看到两个集装箱都已启动并运行。
测试邮政路线。
让我们使用docker exec命令检查我们创建的用户。
检查正在运行的容器。
结论
希望这篇文章对您有所帮助。如果您在学习过程中遇到任何问题,请点击上面的链接查看源代码。