创建目录
mkdir -p /usr/local/docker/mongo/config/ /usr/local/docker/mongo/data/db/ /usr/lcoal/docker/mongo/logs/
创建docker-compose.yaml文件
version: '3.8'
services:
mongo:
image: mongo:6.0
container_name: mongo
restart: always
ports:
- "27017:27017" # 将容器内的 27017 端口映射到宿主机的 27017 端口
environment:
- TZ=Asia/Shanghai
- MONGO_INITDB_DATABASE=xhs_data
- MONGO_INITDB_ROOT_USERNAME=root # 初始化数据库的根用户名
- MONGO_INITDB_ROOT_PASSWORD=root # 初始化数据库的根密码
volumes:
- /usr/local/docker/mongo/data/db:/data/db
- /usr/local/docker/mongo/logs:/var/log/mongodb
- /usr/local/docker/mongo/config:/data/configdb
command: mongod --config /data/configdb/mongo.conf #执行挂载的配置
mongo-express: # 可选:MongoDB 的 Web 管理界面 一般使用其他工具了这个可暂时不装
image: mongo-express
container_name: mongo-express
restart: always
ports:
- "8081:8081" # 将容器内的 8081 端口映射到宿主机的 8081 端口
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=root # MongoDB 的管理员用户名
- ME_CONFIG_MONGODB_ADMINPASSWORD=root # MongoDB 的管理员密码
- ME_CONFIG_MONGODB_SERVER=mongo # MongoDB 服务的名称,与上面的服务名一致
depends_on:
- mongo
networks:
- devopsnetwork
networks:
devopsnetwork:
external: true
创建配置文件mong.conf
systemLog:
destination: file
path: /var/log/mongodb/mongo.log #指定MongoDB的日志文件路径
logAppend: true
storage:
dbPath: /data/db #指定MongoDB的数据文件路径
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
engine: wiredTiger
directoryPerDB: true
net:
bindIpAll: true
port: 27017 #指定MongoDB的端口号
maxIncomingConnections: 10000
security:
authorization: enabled #指定是否启用MongoDB的身份验证机制
启动与关闭
docker compse up -d
docker compose down
docker logs mongo
创建数据库与用户
docker exec -it mongo /bin/bash
# 在容器的bash终端中执行
mongosh -u root -p root --authenticationDatabase admin
use admin;
db.createUser({ user: "yapi", pwd: "yapi123456", roles: [ { role: "readWrite", db: "yapi" } ] });