Har*_*rry 6 mongodb mongodb-query docker docker-compose
我可以使用 docker compose.yml 文件设置用户名、密码和创建数据库
version: '3'
services:
mongodb:
image: mongo
volumes:
- /home/temp/finalewd/temp:/var/lib/mongodb
restart: on-failure
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: XXXX
MONGO_INITDB_ROOT_PASSWORD: XXXX
MONGO_INITDB_DATABASE: XXXX
Run Code Online (Sandbox Code Playgroud)
它启动了新的 mongo 容器,数据库为 XXXX ,配置了用户名和密码。
但是当我尝试使用如下副本集设置 mongo docker 容器时,
# Use root/example as user/password credentials
version: '3.1'
services:
mongo:
image: mongo
restart: on-failure
volumes:
- /home/temp/mongo/compose/data:/data/db
entrypoint: [ "/usr/bin/mongod", "--bind_ip_all","--replSet", "rs0" ]
environment:
MONGO_INITDB_ROOT_USERNAME: XXXX
MONGO_INITDB_ROOT_PASSWORD: XXXX
MONGO_INITDB_DATABASE: XXXX
Run Code Online (Sandbox Code Playgroud)
使用上面的 docker-compose.yml,它会带上副本集,但不会创建数据库/用户名/密码。
为什么在上述情况下不使用环境变量?
任何帮助表示赞赏。
为托马斯的回答添加的内容:
使用 Thomas 的答案中的内容尝试了 docker-compose.yml,一旦 mongo 启动,我尝试了“rs.initiate 但它抛出了已经初始化的状态,所以在这种情况下如何使 mongo 具有主状态?
rs0:OTHER> rs.status();
{
"operationTime" : Timestamp(1552397666, 1),
"ok" : 0,
"errmsg" : "Our replica set config is invalid or we are not a member of it",
"code" : 93,
"codeName" : "InvalidReplicaSetConfig",
"$clusterTime" : {
"clusterTime" : Timestamp(1552397666, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
rs0:OTHER> rs.initiate()
{
"operationTime" : Timestamp(1552397666, 1),
"ok" : 0,
"errmsg" : "already initialized",
"code" : 23,
"codeName" : "AlreadyInitialized",
"$clusterTime" : {
"clusterTime" : Timestamp(1552397666, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
rs0:OTHER>
Run Code Online (Sandbox Code Playgroud)
谢谢,哈利
来自mongo docker 镜像的原始入口点负责在容器启动时创建(最终丢失)数据库。
由于您在 docker-compose.yml 文件 ( entrypoint: [ "/usr/bin/mongod", "--bind_ip_all","--replSet", "rs0" ]) 中覆盖了此入口点,因此您将失去原始入口点的所有功能。
这个 docker 镜像文档告诉我们可以使用 docker composecommand:指令将选项传递给 mongo 进程。你的 docker-compose.yml 文件应该是:
version: '3.1'
services:
mongo:
image: mongo
restart: on-failure
volumes:
- /home/temp/mongo/compose/data:/data/db
command: "--bind_ip_all --replSet rs0"
environment:
MONGO_INITDB_ROOT_USERNAME: XXXX
MONGO_INITDB_ROOT_PASSWORD: XXXX
MONGO_INITDB_DATABASE: XXXX
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7340 次 |
| 最近记录: |