- За частта за удостоверяване:опитвали ли сте да добавите
--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
файл не съм сигурен какво може да причини този проблем. имаш ли някакви предупреждения, докато го използваш? Също така помислете за проверка на този коментар или това