使用 Docker Compose 安装 MongoDB 的步骤如下:
1. 创建项目目录
bash
mkdir mongodb && cd mongodb && mkdir -p data/db && chmod -R 777 ./data/db
mkdir mongodb && cd mongodb && mkdir -p data/db && chmod -R 777 ./data/db
2. 创建 docker-compose.yml
文件
yaml
version: '3.8'
services:
mongodb:
image: mongo:8.0.11 # 使用官方MongoDB镜像
container_name: mongodb
restart: always
ports:
- "27017:27017" # 暴露默认端口
environment:
MONGO_INITDB_ROOT_USERNAME: root # 初始化管理员用户名
MONGO_INITDB_ROOT_PASSWORD: 123456 # 初始化管理员密码
volumes:
- ./data/db:/data/db # 持久化数据存储
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro # 初始化脚本
version: '3.8'
services:
mongodb:
image: mongo:8.0.11 # 使用官方MongoDB镜像
container_name: mongodb
restart: always
ports:
- "27017:27017" # 暴露默认端口
environment:
MONGO_INITDB_ROOT_USERNAME: root # 初始化管理员用户名
MONGO_INITDB_ROOT_PASSWORD: 123456 # 初始化管理员密码
volumes:
- ./data/db:/data/db # 持久化数据存储
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro # 初始化脚本
3. 创建数据目录(可选)
bash
vim data/db/mongo-init.js
vim data/db/mongo-init.js
4. 创建初始化脚本(可选)
创建 mongo-init.js
文件初始化数据库/用户:
javascript
// mongo-init.js
db.createUser({
user: 'myuser',
pwd: 'mypassword',
roles: [
{ role: 'readWrite', db: 'mydatabase' }
]
});
// mongo-init.js
db.createUser({
user: 'myuser',
pwd: 'mypassword',
roles: [
{ role: 'readWrite', db: 'mydatabase' }
]
});
5. 启动 MongoDB
bash
docker-compose up -d
docker-compose up -d
6. 验证安装
bash
# 查看容器状态
docker-compose ps
# 进入容器执行命令
docker exec -it mongodb-container mongosh -u root -p 123456
# 查看容器状态
docker-compose ps
# 进入容器执行命令
docker exec -it mongodb-container mongosh -u root -p 123456
7. 连接 MongoDB
- 本地连接:
mongodb://root:123456@localhost:27017
- 应用连接:使用服务名
mongodb://root:123456@mongodb:27017
(在Docker网络内)
关键配置说明:
持久化存储:
volumes
将主机./data/db
映射到容器内/data/db
,确保数据不丢失安全认证:
通过环境变量设置管理员凭据:yamlenvironment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: 123456
environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: 123456
自定义初始化:
挂载脚本到/docker-entrypoint-initdb.d/
目录,容器首次启动时自动执行端口映射:
ports
将容器 27017 端口映射到主机 27017 端口
常用命令:
命令 | 说明 |
---|---|
docker-compose up -d | 启动服务 |
docker-compose down | 停止并删除容器 |
docker-compose logs | 查看日志 |
docker-compose stop | 停止服务 |
docker-compose start | 启动已停止的服务 |
注意事项:
生产环境安全:
- 务必修改默认密码
123456
- 避免使用 root 账户直接连接应用
- 考虑使用 Docker secrets 管理敏感信息
- 务必修改默认密码
数据备份:
定期备份主机上的./data/db
目录版本控制:
建议指定镜像版本(如mongo:6.0
)而非latest
网络隔离:
在docker-compose.yml
中添加自定义网络提升安全性:yamlnetworks: mynet: driver: bridge services: mongodb: networks: - mynet
networks: mynet: driver: bridge services: mongodb: networks: - mynet