该官方mongo
图片已经合并公关,包括功能,在启动时创建用户和数据库。
当/data/db
目录中未填充任何内容时,数据库初始化将运行。
管理员用户设置
用于控制“ 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
您不需要/不能--auth
在命令行上使用,因为docker entrypoint.sh脚本会在环境变量存在时将其添加到命令行中。
数据库初始化
该映像还提供了/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' }),
db.other.
]
printjson(res)
if (error) {
print('Error, exiting')
quit(1)
}