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

MongoDB dan Docker melalui kesalahan autentikasi pembuatan docker dan tidak menginisialisasi db

  • Untuk bagian autentikasi:sudahkah Anda mencoba menambahkan --authenticationDatabase admin agar bisa login ?
  • Mengenai MONGO_INITDB_DATABASE itu tidak akan efektif kecuali Anda memiliki skrip di bawah /docker-entrypoint-initdb.d/ seperti yang ditunjukkan dalam docker-entrypoiny .sh yang digunakan dalam gambar mongodb sehingga Anda dapat memiliki skrip bash di docker-entrypoint-initdb.d/ dengan itu.

  • Menggunakan pengguna root sebagai pemilik db aplikasi Anda bukanlah keamanan yang bijaksana karena akan memiliki kemampuan untuk mengontrol segala sesuatu di instance mongodb.

    IMHO pendekatan yang lebih baik akan menambahkan variabel tambahan seperti berikut:

    • MONGO_APPLICATION_DATABASE
    • MONGO_APPLICATION_USERNAME
    • MONGO_APPLICATION_PASSWORD

    Kemudian tambahkan skrip bash yang akan membuat pengguna dan menetapkannya ke database dengan menggunakan variabel lingkungan (Anda perlu memasangnya ke docker-entrypoint-initdb.d):

    # initmongo/setup.sh
    mongo admin -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD --eval "db.getSiblingDB('$MONGO_APPLICATION_DATABASE').createUser({user: '$MONGO_APPLICATION_USERNAME', pwd: '$MONGO_APPLICATION_PASSWORD', roles: [{role: 'readWrite', db: '$MONGO_APPLICATION_DATABASE'}]});"
    

    Di docker-compose.yml tambahkan volume ke daftar volume Anda saat ini

    #docker-compose.yml
    volumes:
      - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}"
      - "./initmongo/:/docker-entrypoint-initdb.d/"
    

    Dan akhirnya hapus variabel ini MONGO_INITDB_DATABASE karena tidak perlu untuk itu

    Untuk login gunakan perintah berikut:

    docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
    
  • Untuk .env file saya tidak yakin apa yang dapat menyebabkan masalah ini. apakah Anda memiliki peringatan saat menggunakannya? Pertimbangkan juga untuk memeriksa komentar ini atau ini




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menanyakan setelah diisi di Mongoose

  2. instal mongodb - persyaratan?

  3. $unset pada beberapa bidang di mongodb

  4. Bagaimana memproyeksikan DBRef pada Agregasi Spring MongoDB?

  5. luwak agregat cara memetakan beberapa koleksi menjadi satu Array