Mongo安装
概述
本文档涵盖 MongoDB 的 Docker 部署方法,包含用户名密码认证、数据持久化和资源限制配置,适用于开发测试及轻量级生产场景。
核心能力:
- 用户名密码认证保护
- 数据持久化
- 资源限制管理
部署
1. 创建数据目录
mkdir -p ./mongo/data2. 创建 Docker Compose 编排文件
docker-compose.yaml:
services:
mongo:
image: mongo:latest
container_name: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 123456
TZ: Asia/Shanghai
ports:
- "27017:27017"
volumes:
- ./mongo/data:/data/db
deploy:
resources:
limits:
cpus: "0.5"
memory: "512M"3. 环境变量说明
| 变量 | 必填 | 说明 |
|---|---|---|
MONGO_INITDB_ROOT_USERNAME |
✅ | root 用户名 |
MONGO_INITDB_ROOT_PASSWORD |
✅ | root 用户密码 |
TZ |
❌ | 时区设置 |
启动
docker compose up -d查看启动日志:
docker logs mongo -f --tail=50验证
# 进入容器连接 MongoDB
docker exec -it mongo mongosh -u root -p 123456
# 或使用外部客户端(需安装 mongosh)
mongosh "mongodb://root:123456@127.0.0.1:27017"常用管理命令
| 操作 | 命令 |
|---|---|
| 启动 MongoDB | docker compose up -d |
| 停止 MongoDB | docker compose stop |
| 重启 MongoDB | docker compose restart |
| 查看状态 | docker compose ps |
| 查看日志 | docker logs mongo -f --tail=100 |
| 进入容器 | docker exec -it mongo /bin/bash |
| 连接 MongoDB(容器内) | docker exec -it mongo mongosh -u root -p 123456 |
导入与导出
导入数据
# JSON 导入
docker exec -i mongo mongoimport -u root -p 123456 --authenticationDatabase admin -d test -c users < /path/to/users.json
# BSON 导入
docker exec -i mongo mongorestore -u root -p 123456 --authenticationDatabase admin --archive=/path/to/backup.archive导出数据
# JSON 导出
docker exec mongo mongoexport -u root -p 123456 --authenticationDatabase admin -d test -c users > users.json
# BSON 导出
docker exec mongo mongodump -u root -p 123456 --authenticationDatabase admin --archive=backup.archive常见问题与注意事项
连接被拒绝
- 检查端口是否被占用:
netstat -tlnp | grep 27017- 确认防火墙已放行 27017 端口:
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload认证失败
确认连接时指定了正确的认证数据库(MongoDB 默认使用 admin 作为认证数据库):
# 正确示例(连接命令)
mongosh "mongodb://root:123456@127.0.0.1:27017"
# 或使用 --authenticationDatabase 参数
mongosh -u root -p 123456 --authenticationDatabase admin数据持久化
数据存储在 ./mongo/data 目录,删除该目录会丢失所有数据,删除前请先备份。
创建额外用户
docker exec -it mongo mongosh -u root -p 123456
use test
db.createUser({
user: "appuser",
pwd: "apppass",
roles: [{ role: "readWrite", db: "test" }]
})自定义配置文件
# 创建配置文件
cat > ./mongo/mongod.conf <<EOF
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
storage:
dbPath: /data/db
net:
bindIp: 0.0.0.0
port: 27017
security:
authorization: enabled
EOF修改 docker-compose.yaml 挂载配置:
volumes:
- ./mongo/data:/data/db
- ./mongo/mongod.conf:/etc/mongod.conf