sql >> Database >  >> NoSQL >> MongoDB

MongoDB en Docker via docker-compose auth-fout en db niet initialiseren

  • Voor het authenticatiegedeelte:heb je geprobeerd om --authenticationDatabase admin toe te voegen om in te kunnen loggen ?
  • Over MONGO_INITDB_DATABASE het zal niet effectief zijn tenzij je een script hebt onder /docker-entrypoint-initdb.d/ zoals getoond in de docker-entrypoiny .sh dat wordt gebruikt in de mongodb-afbeelding, zodat u een bash-script kunt hebben in docker-entrypoint-initdb.d/ met dat gezegd.

  • Het gebruik van de root-gebruiker als eigenaar voor uw applicatie-db is geen beveiligingsmaatregel, omdat het de mogelijkheid heeft om alles in de mongodb-instantie te beheren.

    IMHO zou een betere benadering zijn om extra variabelen toe te voegen, zoals de volgende:

    • MONGO_APPLICATION_DATABASE
    • MONGO_APPLICATION_USERNAME
    • MONGO_APPLICATION_PASSWORD

    Voeg vervolgens een bash-script toe dat de gebruiker aanmaakt en toewijst aan de database met behulp van omgevingsvariabelen (je moet het koppelen aan 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'}]});"
    

    Voeg in de docker-compose.yml een volume toe aan uw huidige lijst met volumes

    #docker-compose.yml
    volumes:
      - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}"
      - "./initmongo/:/docker-entrypoint-initdb.d/"
    

    En verwijder tenslotte deze variabele MONGO_INITDB_DATABASE omdat het niet nodig is

    Gebruik het volgende commando om in te loggen:

    docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
    
  • Voor de .env bestand Ik weet niet zeker wat dit probleem kan veroorzaken. heb je waarschuwingen tijdens het gebruik? Overweeg ook om deze opmerking te controleren of dit




  1. Mongo-documenten met hetzelfde veld vinden?

  2. Stel MongoDB Database-quotum in (SIZE)

  3. Niet gelijk aan mongo mapper

  4. Null-waarde opvragen in MongoDB