MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да изпълните команда веднъж в Docker compose

Предлагам да добавите скрипт на входна точка към вашия контейнер; в този скрипт за входна точка можете да проверите дали базата данни е инициализирана и ако не е, изпълнете необходимите стъпки.

Както забелязахте във въпроса си, редът, в който се стартират услугите/контейнерите, не трябва да се приема за даденост, така че е възможно контейнерът на вашето приложение да е стартиран преди контейнера на базата данни, така че скриптът трябва да вземе това предвид.

Като пример, погледнете официалното изображение на WordPress, което извършва еднократна инициализация на базата данни в нейния скрипт за входна точка. Скриптът се опитва да се свърже с базата данни (и прави повторен опит, ако базата данни не може да бъде осъществена връзка (все още)) и проверява дали е необходима инициализация; https://github.com /docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint.sh#L146-L171

ЗАБЕЛЕЖКА

Забелязвам, че сте създали „контейнер само за данни“, към който да прикачите своя том. От docker 1.9, docker има управление на обеми, включително именуване на томове. Поради това вече не е необходимо да използвате контейнери „само за данни“.

Можете да премахнете контейнера само за данни от вашия файл за композиране и да промените услугата си mongo, за да изглежда по този начин;

  mongo:
    image: mongo:latest
    volumes:
      - mongodata:/data/db
    ports:
      - "28001:27017"
    command: --smallfiles --rest --auth

Това трябва да създаде нов том, наречен mongodata ако не съществува, или използвайте повторно съществуващия том с това име. Можете да изброите всички томове с помощта на docker volume ls и премахнете том с docker volume rm <some-volume> ако вече не ви трябва



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да изравня двойни масиви в mongoDB?

  2. Грешка [ERR_HTTP_HEADERS_SENT] Не може да се зададат заглавки, след като са изпратени на клиента

  3. MongoDB обобщен групов масив към ключ:стойност на сумата

  4. Вмъкване на данни във вложен масив в mongodb

  5. Мързеливо зареждане с използване на nodejs и mongoDB като бекенд данни