Докер Монго потерял данные после добавления аутентификации - PullRequest
1 голос
/ 07 апреля 2019

Я хочу включить 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

Хотя я включил аутентификацию, но пользователь с правами администратора не может быть добавлен к существующему пользователю.

Затем я обновил 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, не уверен, что так.

РЕДАКТИРОВАТЬ Любой возможный объем монго был перезаписан? Путь ~/deploy/data установлен в docker-compose.yml, который я никогда не менял.

...