docker mongo添加身份验证后丢失数据

时间:2019-04-07 17:03:13

标签: mongodb docker docker-compose

我想为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,我从未更改过。

0 个答案:

没有答案