MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB e Docker tramite docker-compose auth error e non inizializzando db

  • 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 in docker-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'è bisogno

    Per 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