MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB i Docker przez błąd uwierzytelniania docker-compose i nie inicjowanie db

  • 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 w docker-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 potrzeby

    Aby 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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. BŁĄD:proces potomny nie powiódł się, zakończono z błędem numer 1,mongodb

  2. Jak sprawdzić, czy Mongodb działa w trybie auth w skrypcie powłoki?

  3. Funkcja Mongodb findOneAndUpdate wstawia nowy dokument

  4. MongoDB:jak parsować datę w wersji mongoDb 3.6?

  5. Jak dynamicznie $ustawić pole poddokumentu w mongodb?