之前 mongo 没有开启 auth,现在想打开。但是开启后数据都丢失了。
最开始的 docker-compose.yml
mongo:
image: mongo
volumes:
- ./data:/data/db
ports:
- "27017:27017"
加上了数据户的账户和密码
mongo:
image: mongo
volumes:
- ./data:/data/db
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password
然后 docker-compose up, 发现并没用添加这个用户,因为我的数据库已经存在了,所以继续加上创建用户名和密码的部分
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: "passw0rd",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
就这样 auth 打开了,但是之前的数据库没有了。
有一个警告
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:
- ./data:/data/db
. 这个目录从来没有动过,是不是 docker-compose up 会覆盖这个目录导致我数据丢失。还是其他的原因。不知道是否能找回我的数据,望高人指点,谢谢了!