- For godkendelsesdelen:har du prøvet at tilføje
--authenticationDatabase admin
for at kunne logge ind ? -
Angående
MONGO_INITDB_DATABASE
det vil ikke være effektivt, medmindre du har et script under/docker-entrypoint-initdb.d/
som vist i docker-entrypoiny .sh der bruges i mongodb-billedet, så du kan have et bash-script idocker-entrypoint-initdb.d/
med det sagt. -
Det er ikke sikkerhedsmæssigt at bruge root-brugeren som ejer af din applikation db, da det vil have mulighed for at kontrollere alt i mongodb-forekomsten.
IMHO en bedre tilgang ville være at tilføje ekstra variabler som følgende:
MONGO_APPLICATION_DATABASE
MONGO_APPLICATION_USERNAME
MONGO_APPLICATION_PASSWORD
Tilføj derefter et bash-script, der vil oprette brugeren og tildele det til databasen ved hjælp af miljøvariabler (du skal montere det til 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 tilføj en volumen til din aktuelle liste over bind
#docker-compose.yml volumes: - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}" - "./initmongo/:/docker-entrypoint-initdb.d/"
Og fjern endelig denne variabel
MONGO_INITDB_DATABASE
da der ikke er behov for detBrug følgende kommando for at logge ind:
docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
-
For
.env
fil, jeg er ikke sikker på, hvad der kan forårsage dette problem. har du nogen advarsler, mens du bruger det? Overvej også at tjekke denne kommentar eller dette