MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB и Docker чрез docker-compose auth грешка и неинициализиране на db

  • За частта за удостоверяване:опитвали ли сте да добавите --authenticationDatabase admin за да можете да влезете?
  • Относно MONGO_INITDB_DATABASE няма да е ефективен, освен ако нямате скрипт под /docker-entrypoint-initdb.d/ както е показано в docker-entrypoiny .sh който се използва в изображението на mongodb, така че можете да имате bash скрипт в docker-entrypoint-initdb.d/ с казаното.

  • Използването на root потребител като собственик за вашата db на приложението не е от гледна точка на сигурността, тъй като ще има способността да контролира всичко в екземпляра на mongodb.

    IMHO по-добър подход би бил добавянето на допълнителни променливи като следното:

    • MONGO_APPLICATION_DATABASE
    • MONGO_APPLICATION_USERNAME
    • MONGO_APPLICATION_PASSWORD

    След това добавете bash скрипт, който ще създаде потребителя и ще го присвои към базата данни чрез използване на променливи на средата (трябва да го монтирате към 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'}]});"
    

    В docker-compose.yml добавете том към текущия си списък с томове

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

    И накрая премахнете тази променлива MONGO_INITDB_DATABASE тъй като няма нужда от това

    За да влезете, използвайте следната команда:

    docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
    
  • За .env файл не съм сигурен какво може да причини този проблем. имаш ли някакви предупреждения, докато го използваш? Също така помислете за проверка на този коментар или това




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Заявка за получаване на данни за последните X минути с Mongodb

  2. Има ли начин да стартирате обвивката на MongoDB (или метода tojson) в строг режим JSON?

  3. Akka и ReactiveMongo

  4. Използване на MongoDB C# драйвер:опакован или неопакован?

  5. Mongo намери стойност с неизвестен родителски ключ