sql >> Databáze >  >> NoSQL >> MongoDB

Inicializujte data na dockerized mongo

Samostatnější přístup:

  • vytvářejte soubory javascript, které inicializují vaši databázi
  • vytvořte odvozený obraz MongoDB dockeru, který obsahuje tyto soubory

Existuje mnoho odpovědí, které používají jednorázové kontejnery nebo vytvářejí svazky a spojují je, ale zdá se to příliš komplikované. Pokud se podíváte na docker-entrypoint.sh mongo docker obrázku, uvidíte, že řádek 206 spouští /docker-entrypoint-initdb.d/*.js soubory při inicializaci pomocí syntaxe:mongo <db> <js-file> . Pokud vytvoříte odvozený obraz MongoDB dockeru, který obsahuje vaše počáteční data, můžete:

  • mají jeden příkaz ke spuštění dockeru, který postaví mongo s počátečními daty
  • udržovat data během zastavení a spuštění kontejneru
  • resetujte tato data pomocí příkazů docker stop, rm a run
  • snadné nasazení pomocí plánovačů běhu, jako jsou k8s, mesos, swarm, rancher

Tento přístup je zvláště vhodný pro:

  • POC, která k zobrazení potřebují pouze realistická data
  • CI/CD kanály, které potřebují konzistentní data pro testování černé skříňky
  • příklady nasazení pro ukázky produktů (prodejní technici, vlastníci produktů)

Jak na to:

  1. Vytvořte a otestujte své inicializační skripty (podle potřeby upravte data)
  2. Vytvořte Dockerfile pro svůj odvozený obrázek, který zkopíruje vaše init skripty

    FROM mongo:3.4
    COPY seed-data.js /docker-entrypoint-initdb.d/
    
  3. Vytvořte si svůj docker image

    docker build -t mongo-sample-data:3.4 .
    
  4. Volitelně odešlete svůj obrázek do registru dockeru, aby jej mohli používat ostatní

  5. Spusťte svůj docker image

    docker run                               \
        --name mongo-sample-data             \
        -p 27017:27017                       \
        --restart=always                     \
        -e MONGO_INITDB_DATABASE=application \
        -d mongo-sample-data:3.4
    

Ve výchozím nastavení docker-entrypoint.sh použije vaše skripty na test db; výše uvedený příkaz spusťte env var MONGO_INITDB_DATABASE=application použije tyto skripty na application db místo toho. Alternativně můžete vytvořit a přepnout na různé databáze db v souboru js.

Mám github repo, které dělá právě toto - zde jsou příslušné soubory.



  1. proč nemůžu spustit mongodb

  2. Autentizace pomocí Spring Security a MongoDB

  3. Jak MongoDB umožňuje strojové učení

  4. MongoDB find()