MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB et Docker via l'erreur d'authentification docker-compose et non l'initialisation de la base de données

  • Pour la partie authentification :avez-vous essayé d'ajouter --authenticationDatabase admin pour pouvoir se connecter ?
  • Concernant MONGO_INITDB_DATABASE il ne sera efficace que si vous avez un script sous /docker-entrypoint-initdb.d/ comme indiqué dans le docker-entrypoiny .sh qui est utilisé dans l'image mongodb afin que vous puissiez avoir un script bash dans docker-entrypoint-initdb.d/ cela dit.

  • L'utilisation de l'utilisateur root en tant que propriétaire de la base de données de votre application n'est pas une sécurité, car il aura la capacité de tout contrôler dans l'instance mongodb.

    À mon humble avis, une meilleure approche consisterait à ajouter des variables supplémentaires comme les suivantes :

    • MONGO_APPLICATION_DATABASE
    • MONGO_APPLICATION_USERNAME
    • MONGO_APPLICATION_PASSWORD

    Ajoutez ensuite un script bash qui créera l'utilisateur et l'affectera à la base de données en utilisant des variables d'environnement (vous devez le monter sur 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'}]});"
    

    Dans le docker-compose.yml, ajoutez un volume à votre liste actuelle de volumes

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

    Et enfin supprimer cette variable MONGO_INITDB_DATABASE car il n'y en a pas besoin

    Pour vous connecter, utilisez la commande suivante :

    docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
    
  • Pour le .env fichier, je ne sais pas ce qui pourrait causer ce problème. avez-vous des avertissements lors de son utilisation? Pensez également à vérifier ce commentaire ou ceci