我想为mongo容器启用auth
。
docker-compose.yml
是:
docker-compose.yml
mongo:
image: mongo
volumes:
- ./data:/data/db
ports:
- "27017:27017"
数据库中有一些数据。 我更新了 docker-compose.yml
mongo:
image: mongo
volumes:
- ./data:/data/db
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password
即使我启用了身份验证,但无法将admin用户添加到现有用户中。
然后我更新了 docker-compose.yml :
mongo:
image: mongo
volumes:
- ./data:/data/db
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password
volumes:
- ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
mongo-init.js
use admin
db.createUser(
{
user: "admin",
pwd: "passwr0d",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
这次,我可以看到已成功添加日志用户。
但是我丢失了我现有的数据:( 警告是:
WARNING: Service "mongo" is using volume "/data/db" from the previous container. Host mapping "/home/xxx/deploy/data" has no Recreating deploy_mongo_1 ...
有什么帮助找回我的数据吗?谢谢!
PS:在mongo-init.js
中,我使用了passwr0d
。并且docker-compose.yml
的密码是password
。我可以通过password
登录mongo,不确定情况是否如此。
编辑
mongo的音量有可能被覆盖吗?路径是在~/deploy/data
中设置的docker-compose.yml
,我从未更改过。