- Per la parte di autenticazione:hai provato ad aggiungere
--authenticationDatabase admin
per poter accedere? -
Riguardo a
MONGO_INITDB_DATABASE
non sarà efficace a meno che tu non abbia uno script in/docker-entrypoint-initdb.d/
come mostrato in docker-entrypoiny .sh che viene utilizzato nell'immagine mongodb in modo da poter avere uno script bash indocker-entrypoint-initdb.d/
detto questo. -
L'utilizzo dell'utente root come proprietario per la tua applicazione db non è un'operazione saggia per la sicurezza in quanto avrà la capacità di controllare tutto nell'istanza mongodb.
IMHO un approccio migliore sarebbe l'aggiunta di variabili extra come le seguenti:
MONGO_APPLICATION_DATABASE
MONGO_APPLICATION_USERNAME
MONGO_APPLICATION_PASSWORD
Quindi aggiungi uno script bash che creerà l'utente e lo assegnerà al database utilizzando le variabili di ambiente (è necessario montarlo su 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'}]});"
Nella finestra mobile-compose.yml aggiungi un volume al tuo attuale elenco di volumi
#docker-compose.yml volumes: - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}" - "./initmongo/:/docker-entrypoint-initdb.d/"
E infine rimuovi questa variabile
MONGO_INITDB_DATABASE
poiché non ce n'è bisognoPer effettuare il login utilizzare il seguente comando:
docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
-
Per il
.env
file non sono sicuro di cosa potrebbe causare questo problema. hai avvertimenti durante l'utilizzo? Considera anche di controllare questo commento o questo