如何通过Docker初始化脚本为MongoDB创建数据库、集合及用户
嘿,我来帮你搞定这个MongoDB初始化的需求!咱们可以利用Mongo官方镜像自带的初始化机制——容器启动时会自动执行/docker-entrypoint-initdb.d/目录下的脚本,这样就能自动完成数据库创建、集合创建和用户添加的操作,不用手动进容器折腾。
第一步:写好初始化脚本
新建一个init-mongo.js文件,把下面的代码放进去(你可以根据实际需求修改集合名称和用户密码):
// 切换到要创建的data数据库 use data; // 创建集合,这里示例创建一个叫"user_profiles"的集合,你可以改成自己需要的名字 db.createCollection("user_profiles"); // 创建第一个用户:拥有data库的读写权限 db.createUser({ user: "data_full_access", pwd: "YourStrongPassword123", // 一定要换成安全的密码! roles: [{ role: "readWrite", db: "data" }] }); // 创建第二个用户:只有data库的只读权限 db.createUser({ user: "data_read_only", pwd: "AnotherStrongPass456", // 同样要换成安全密码 roles: [{ role: "read", db: "data" }] });
第二步:修改你的Docker Compose文件
把原来的Compose文件更新一下,加上volumes配置,把刚才写的脚本挂载到容器的初始化目录里:
version: '3.1' services: mongo: image: mongo restart: always environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: XXXXXXXXXXX ports: - 27017:27017 volumes: # 把本地的init-mongo.js挂载到容器的初始化脚本目录 - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js
第三步:启动容器并验证
执行下面的命令启动容器:
docker-compose up -d
等容器启动完成后,你可以用root账号连接Mongo来验证结果:
mongosh -u root -p XXXXXXXXXXX --authenticationDatabase admin
进入Mongo Shell后,执行下面的命令检查:
use data; // 查看创建的集合 show collections; // 查看创建的两个用户 show users;
这样就完美完成了你要求的所有任务:创建data数据库、生成集合、添加两个专属用户。
内容的提问来源于stack exchange,提问作者Naggappan Ramukannan
相关产品推荐
相关产品推荐

