Изображение Docker Монго не запускается после создания - PullRequest
0 голосов
/ 28 июня 2019

Я использую docker-compose для создания 3 различных контейнеров для экземпляров frontend, backend и mongo.3 из них запущены и связаны между собой, но мне нужно создать пользователя администратора в БД, как только будет запущен экземпляр mongo.Согласно документации по образу монго, каждый скрипт, расположенный на docker-entrypoint-initdb.d, должен быть запущен после создания экземпляра.Как я уже сказал, я использую docker compose, поэтому для mongo нет Dockerfile, просто сервис, использующий официальный образ mongo, поэтому я установил громкость для этого файла [не знаю, если из-за этого скрипт неработает, потому что это символическая ссылка вместо скопированного файла].Поэтому я попытался запустить команду для запуска этого скрипта, но она не работает, но если тогда я сделаю docker exec для экземпляра mongodb и сам запустлю скрипт, он будет работать и создаст пользователя-администратора.

Итак, как мне запустить этот скрипт после создания экземпляра?

это мой docker-compose.yml файл

mongodb:
    container_name: mongodb
    image: mongo
    command: /bin/bash "cd /docker-entrypoint-initdb.d && mongo-init.sh"
    networks:
      - backend-network
    volumes:
      - './db:/data/db'
      - './mongo-init.sh:/docker-entrypoint-initdb.d/mongo-init.sh'
    tty: true
    restart: always

1 Ответ

1 голос
/ 28 июня 2019

Вам не нужно изменять команду mongo, потому что это вызовет проблемы в контейнере mongodb. Определив command, вы переопределите исходный CMD, который должен быть запущен. скрипт будет выполняться автоматически, если вы смонтировали его под /docker-entrypoint-initdb.d/, как описано в здесь

Обратите внимание, что сценарии будут выполняться только один раз в начале вашего контейнера, и для его повторного выполнения необходимо удалить том /data/db, связанный с вашим контейнером

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...