Не удается запустить несколько Docker-контейнеров mongodb с одним и тем же общим томом - PullRequest
0 голосов
/ 05 октября 2018

Я хочу запустить два контейнера моноконтроллера с компоновкой докера.Контейнеры mongo имеют одинаковые общие тома с хостом докера.Когда я запустил его с помощью docker compose, только один контейнер mongo работает, в то время как другой завершает работу, потому что он сказал

DBPathInUse: Невозможно заблокировать файл блокировки: /data/db/mongod.lock (Неизвестная ошибка).Другой экземпляр mongod уже запущен в каталоге / data / db и завершает работу

Это мой составной файл докера

version: '3'
services:
  frontend:
    image: fernandomaxwell/frontend
    ports:
     - "3007:3007"
    networks:
      main:
      database_frontend:

  backend:
    image: fernandomaxwell/backend
    ports:
     - "2007:2007"
    networks:
      main:
      database_backend:

  mongo_backend:
    image: mongo
    volumes:
     - "/var/lib/mongodb:/data/db"
    ports:
     - "27017:27017"
    networks:
      database_backend:

  mongo_frontend:
    image: mongo
    volumes:
     - "/var/lib/mongodb:/data/db"
    ports:
     - "27018:27017"
    networks:
      database_frontend:

networks:
  main:
  database_backend:
  database_frontend:

Есть идеи для решения этой проблемы?

1 Ответ

0 голосов
/ 05 октября 2018

Проблема здесь:

Контейнеры mongo имеют одинаковые общие тома с хостом докера

Вы не можете запустить два экземпляра mongo в одном каталоге данных.Это может привести к повреждению данных и странным проблемам, поэтому mongo-db явно запрещает это делать (см. Также этот вопрос здесь)

Почему вы хотите это сделать?Обычно вы предоставляете два разных тома для ваших экземпляров mongo, например:

version: '3'
services:
  frontend:
    image: fernandomaxwell/frontend
    ports:
     - "3007:3007"
    networks:
      main:
      database_frontend:

  backend:
    image: fernandomaxwell/backend
    ports:
     - "2007:2007"
    networks:
      main:
      database_backend:

  mongo_backend:
    image: mongo
    volumes:
     - "/var/lib/mongodb-back:/data/db"
    ports:
     - "27017:27017"
    networks:
      database_backend:

  mongo_frontend:
    image: mongo
    volumes:
     - "/var/lib/mongodb-front:/data/db"
    ports:
     - "27018:27017"
    networks:
      database_frontend:

networks:
  main:
  database_backend:
  database_frontend:

Кроме того, вы должны рассмотреть использование именованных томов вместо путей к хостам.Для этого вам не нужно заботиться о создании каталогов на хосте перед запуском compose-файла.Чтобы использовать именованные тома, просто измените объявление тома с "/var/lib/mongodb-back:/data/db" на "mongodb-back:/data/db"

...