下面我就详细分享一下如何使用Docker搭建MongoDB单节点副本集的实现。
前置条件
在进行下一步操作之前,请确保已经安装并配置好了Docker和Docker Compose。
步骤一:创建项目目录
首先,我们需要在本地创建一个项目目录,例如:
mkdir mongodb
cd mongodb
步骤二:创建docker-compose.yml文件
然后,我们可以在项目目录下创建一个docker-compose.yml文件,用于定义MongoDB容器集合的配置。
version: '3'
services:
mongodb:
image: mongo:4.2
restart: always
ports:
- "27017:27017"
volumes:
- ./data:/data/db
command: mongod --replSet rs0
在此配置文件中,我们定义了一个MongoDB服务,包括使用mongo:4.2镜像创建容器、将容器始终保持运行状态、将主机的27017端口映射到容器的27017端口、将主机的data目录挂载到容器的/data/db目录、执行mongod命令,并启动副本集。
步骤三:构建容器
接下来,我们可以使用以下命令构建并启动MongoDB容器:
docker-compose up -d
此命令将启动MongoDB容器,并输出容器ID。
步骤四:配置副本集
在MongoDB容器中,我们需要执行一些命令来配置副本集。我们可以使用以下命令登录到容器中:
docker exec -it mongodb bash
然后,我们可以进入MongoDB shell:
mongo
接下来,我们需要为副本集添加节点。在此示例中,我们将使用两个节点。我们可以使用以下命令添加第一个节点(请注意要用容器名称替换localhost):
rs.initiate({_id: 'rs0', members: [{ _id: 0, host : "mongodb:27017" }]})
然后,我们可以使用以下命令添加第二个节点:
rs.add("mongodb2:27018")
在上面的命令中,我们添加了名为rs0的副本集,并将两个节点添加到rs0副本集中,端口分别为27017和27018。
在此之后,我们可以使用以下命令检查副本集状态:
rs.status()
此命令将输出副本集的状态信息。
示例一:向副本集添加数据
现在,我们可以使用示例代码将数据添加到MongoDB数据库中。在此示例中,我们将使用Node.js和Mongoose库。
首先,我们需要在项目目录下创建一个名为index.js的文件,然后编写以下代码:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test?replicaSet=rs0', { useNewUrlParser: true });
const userSchema = new mongoose.Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchema);
const user = new User({ name: "Tom", age: 30 });
user.save((err) => {
if (err) {
throw err;
} else {
console.log('User saved!');
}
mongoose.disconnect();
});
运行代码之前,需要先使用npm安装mongoose库:
npm install mongoose
然后,我们可以使用以下命令运行代码:
node index.js
此命令将在MongoDB副本集的主节点上添加一个名为“test”的数据库,并将“Tom”用户添加到“test”数据库的“users”集合中。
示例二:查询副本集数据
现在,我们可以使用示例代码查询MongoDB副本集中的数据。在此示例中,我们将查询“users”集合中的所有文档。
同样,在项目目录下创建一个名为query.js的文件,然后编写以下代码:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test?replicaSet=rs0', { useNewUrlParser: true });
const userSchema = new mongoose.Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchema);
User.find((err, users) => {
if (err) {
throw err;
}
console.log(users);
mongoose.disconnect();
});
然后,我们可以使用以下命令运行代码:
node query.js
此命令将查询“test”数据库的“users”集合中的所有文档,并将结果输出到控制台。
到此为止,我们已经成功建立了MongoDB单节点副本集。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker搭建mongodb单节点副本集的实现 - Python技术站