MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Inisialisasi data pada mongo dockerized

Pendekatan yang lebih mandiri:

  • buat file javascript yang menginisialisasi database Anda
  • buat gambar buruh pelabuhan MongoDB turunan yang berisi file-file ini

Ada banyak jawaban yang menggunakan wadah sekali pakai atau membuat volume dan menautkannya, tetapi ini tampaknya terlalu rumit. Jika Anda melihat docker-entrypoint.sh gambar mongo docker, Anda melihat bahwa baris 206 mengeksekusi /docker-entrypoint-initdb.d/*.js file di inisialisasi menggunakan sintaks:mongo <db> <js-file> . Jika Anda membuat gambar buruh pelabuhan MongoDB turunan yang berisi data benih Anda, Anda dapat:

  • memiliki satu perintah docker run yang menjalankan mongo dengan data seed
  • memiliki data yang dipertahankan melalui pemberhentian dan permulaan penampung
  • reset data tersebut dengan perintah docker stop, rm, dan run
  • sebarkan dengan mudah dengan penjadwal runtime seperti k8s, mesos, swarm, rancher

Pendekatan ini sangat cocok untuk:

  • POC yang hanya membutuhkan beberapa data realistis untuk ditampilkan
  • Pipa CI/CD yang membutuhkan data yang konsisten untuk pengujian kotak hitam
  • contoh penerapan untuk demo produk (insinyur penjualan, pemilik produk)

Cara:

  1. Buat dan uji skrip inisialisasi Anda (data perawatan yang sesuai)
  2. Buat Dockerfile untuk gambar turunan Anda yang menyalin skrip init Anda

    FROM mongo:3.4
    COPY seed-data.js /docker-entrypoint-initdb.d/
    
  3. Bangun citra buruh pelabuhan Anda

    docker build -t mongo-sample-data:3.4 .
    
  4. Secara opsional, dorong gambar Anda ke registri buruh pelabuhan untuk digunakan orang lain

  5. Jalankan gambar buruh pelabuhan Anda

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

Secara default, docker-entrypoint.sh akan menerapkan skrip Anda ke test db; jalankan perintah di atas env var MONGO_INITDB_DATABASE=application akan menerapkan skrip ini ke application db sebagai gantinya. Atau, Anda dapat membuat dan beralih ke dbs yang berbeda di file js.

Saya memiliki repo github yang melakukan hal ini - berikut adalah file yang relevan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. database node.js

  2. MongoDB - Perbarui objek di Array bersarang

  3. Konfigurasikan logging untuk driver MongoDB Java

  4. Pembaruan koleksi meteor dengan id tradisional

  5. Agregasi MongoDB dengan jumlah nilai array