当/data/db
目录中没有任何内容时,docker hub上的mongo
映像将在/docker-entrypoint-initdb.d/
中运行任何脚本。
数据库初始化
mongo
容器映像提供/docker-entrypoint-initdb.d/
路径以部署自定义的.js
或.sh
设置脚本,这些脚本将在数据库初始化时运行一次。.js
脚本默认会针对test
执行,如果在环境变量中定义了MONGO_INITDB_DATABASE
,则会以该变量为准。
COPY mysetup.sh /docker-entrypoint-initdb.d/
或者。
COPY mysetup.js /docker-entrypoint-initdb.d/
一个简单的初始化mongo shell javascript文件,演示了如何设置container
集合包含数据、日志记录以及如何以错误退出(用于结果检查)。
let error = true
let res = [
db.container.drop(),
db.container.createIndex({ myfield: 1 }, { unique: true }),
db.container.createIndex({ thatfield: 1 }),
db.container.createIndex({ thatfield: 1 }),
db.container.insert({ myfield: 'hello', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello2', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello3', thatfield: 'testing' }),
db.container.insert({ myfield: 'hello3', thatfield: 'testing' })
]
printjson(res)
if (error) {
print('Error, exiting')
quit(1)
}
管理员用户设置
用于控制“root”用户设置的环境变量包括:
MONGO_INITDB_ROOT_USERNAME
MONGO_INITDB_ROOT_PASSWORD
示例
docker run -d \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=password \
mongod
或者 Dockerfile
FROM docker.io/mongo
ENV MONGO_INITDB_ROOT_USERNAME admin
ENV MONGO_INITDB_ROOT_PASSWORD password
当检测到环境变量存在时,docker的entrypoint.sh
脚本会自动添加--auth
,因此您无需在命令行上使用它。