MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak jednorazowo uruchomić polecenie w Docker Compose

Proponuję dodać skrypt wejścia do kontenera; w tym skrypcie punktu wejścia możesz sprawdzić, czy baza danych została zainicjowana, a jeśli nie, wykonaj wymagane kroki.

Jak zauważyłeś w swoim pytaniu, kolejność uruchamiania usług/kontenerów nie powinna być traktowana jako oczywista, więc możliwe, że kontener aplikacji zostanie uruchomiony przed kontener bazy danych, więc skrypt powinien wziąć to pod uwagę.

Jako przykład spójrz na oficjalny obraz WordPress, który wykonuje jednorazową inicjalizację bazy danych w swoim skrypcie punktu wejścia. Skrypt próbuje połączyć się z bazą danych (i ponawia próbę, jeśli nie można (jeszcze) skontaktować się z bazą danych) i sprawdza, czy inicjalizacja jest potrzebna; https://github.com /docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint.sh#L146-L171

UWAGA

Zauważyłem, że utworzyłeś „kontener tylko na dane”, do którego chcesz dołączyć swój wolumin. Od wersji docker 1.9 docker obsługuje zarządzanie woluminami, w tym nazewnictwo woluminów. Z tego powodu nie musisz już używać kontenerów „tylko dane”.

Możesz usunąć kontener zawierający tylko dane z pliku tworzenia i zmienić usługę mongo, aby wyglądała mniej więcej tak;

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

Powinno to utworzyć nowy wolumin o nazwie mongodata jeśli nie istnieje, lub ponownie użyj istniejącego woluminu o tej nazwie. Możesz wyświetlić listę wszystkich woluminów za pomocą docker volume ls i usuń wolumin za pomocą docker volume rm <some-volume> jeśli już go nie potrzebujesz



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dlaczego pusta baza danych MongoDB jest tak duża?

  2. Pobieranie com.mongodb.MongoException$DuplicateKey w mongodb z javą za pomocą upsert

  3. Nodejs Mongoose - jak uniknąć piekła zwrotnego?

  4. Pomoc dotycząca struktury bazy danych MongoDB i najlepszych praktyk

  5. Optymalizacja wydajności schematu MongoDB