sql >> Database >  >> NoSQL >> MongoDB

Een opdracht eenmaal uitvoeren in Docker compose

Ik stel voor om een ​​entrypoint-script toe te voegen aan je container; in dit entrypoint-script kunt u controleren of de database is geïnitialiseerd, en als dat niet het geval is, de vereiste stappen uitvoeren.

Zoals u in uw vraag hebt opgemerkt, moet de volgorde waarin services / containers worden gestart niet als vanzelfsprekend worden beschouwd, dus het is mogelijk dat uw toepassingscontainer voor is gestart de databasecontainer, dus het script moet daar rekening mee houden.

Bekijk als voorbeeld de officiële WordPress-afbeelding, die een eenmalige initialisatie van de database uitvoert in zijn entrypoint-script. Het script probeert verbinding te maken met de database (en probeert het opnieuw als de database (nog) niet kan worden bereikt), en controleert of initialisatie nodig is; https://github.com /docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint.sh#L146-L171

OPMERKING

Ik zie dat je een "data-only container" hebt gemaakt om je volume aan te koppelen. Sinds docker 1.9 heeft docker volumebeheer, inclusief het benoemen van volumes. Hierdoor hoeft u niet langer "data-only" containers te gebruiken.

U kunt de container met alleen gegevens uit uw opstelbestand verwijderen en uw mongo-service er ongeveer zo uit laten zien;

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

Dit zou een nieuw volume moeten maken, genaamd mongodata als het niet bestaat, of hergebruik het bestaande volume met die naam. U kunt alle volumes weergeven met docker volume ls en verwijder een volume met docker volume rm <some-volume> als je het niet langer nodig hebt



  1. MongoRegex gebruiken (MongoDB C#-stuurprogramma)

  2. Mongodb geaggregeerde query op specifieke records in plaats van verzameling

  3. Hoe te matchen op samengevoegde collecties met Laravel en MongoDB?

  4. Hoe voeg je automatische verhoging toe aan de bestaande verzameling in mongodb/node.js?