- För autentiseringsdelen:har du försökt lägga till
--authenticationDatabase admin
för att kunna logga in ? -
Angående
MONGO_INITDB_DATABASE
det kommer inte att vara effektivt om du inte har ett skript under/docker-entrypoint-initdb.d/
som visas i docker-entrypoiny .sh som används i mongodb-bilden så att du kan ha ett bash-skript idocker-entrypoint-initdb.d/
med det sagt. -
Att använda root-användaren som ägare för din applikation db är inte säkerhetsmässigt eftersom det kommer att ha förmågan att kontrollera allt i mongodb-instansen.
IMHO ett bättre tillvägagångssätt skulle vara att lägga till extra variabler som följande:
MONGO_APPLICATION_DATABASE
MONGO_APPLICATION_USERNAME
MONGO_APPLICATION_PASSWORD
Lägg sedan till ett bash-skript som skapar användaren och tilldelar det till databasen genom att använda miljövariabler (du måste montera det till 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'}]});"
I docker-compose.yml lägg till en volym till din nuvarande lista över volymer
#docker-compose.yml volumes: - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}" - "./initmongo/:/docker-entrypoint-initdb.d/"
Och ta slutligen bort denna variabel
MONGO_INITDB_DATABASE
eftersom det inte behövsAnvänd följande kommando för att logga in:
docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
-
För
.env
fil jag är inte säker på vad som kan orsaka detta problem. har du några varningar när du använder den? Överväg också att kolla denna kommentar eller detta