- Dla części uwierzytelniania:czy próbowałeś dodać
--authenticationDatabase admin
aby móc się zalogować? -
Odnośnie
MONGO_INITDB_DATABASE
nie będzie skuteczny, chyba że masz skrypt pod/docker-entrypoint-initdb.d/
jak pokazano w docker-entrypoiny .sh który jest używany w obrazie mongodb, więc możesz mieć skrypt bash wdocker-entrypoint-initdb.d/
z tym, co powiedział. -
Używanie użytkownika root jako właściciela bazy danych aplikacji nie jest bezpieczne, ponieważ będzie mieć możliwość kontrolowania wszystkiego w instancji mongodb.
IMHO lepszym podejściem byłoby dodanie dodatkowych zmiennych, takich jak:
MONGO_APPLICATION_DATABASE
MONGO_APPLICATION_USERNAME
MONGO_APPLICATION_PASSWORD
Następnie dodaj skrypt bash, który utworzy użytkownika i przypisze go do bazy danych za pomocą zmiennych środowiskowych (musisz go zamontować do 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'}]});"
W docker-compose.yml dodaj wolumin do swojej aktualnej listy woluminów
#docker-compose.yml volumes: - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}" - "./initmongo/:/docker-entrypoint-initdb.d/"
I na koniec usuń tę zmienną
MONGO_INITDB_DATABASE
ponieważ nie ma takiej potrzebyAby się zalogować, użyj następującego polecenia:
docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
-
Dla
.env
plik nie jestem pewien, co może spowodować ten problem. czy masz jakieś ostrzeżenia podczas korzystania z niego? Rozważ także sprawdzenie tego komentarza lub to