- 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 dansdocker-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 besoinPour 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