sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB och Docker via docker-compose auth-fel och initierar inte db

  • För autentiseringsdelen:har du försökt lägga till --authenticationDatabase admin för att kunna logga in ?
  • Angående MONGO_INITDB_DATABASE det kommer inte att vara effektivt om du inte har ett skript under /docker-entrypoint-initdb.d/ som visas i docker-entrypoiny .sh som används i mongodb-bilden så att du kan ha ett bash-skript i docker-entrypoint-initdb.d/ med det sagt.

  • Att använda root-användaren som ägare för din applikation db är inte säkerhetsmässigt eftersom det kommer att ha förmågan att kontrollera allt i mongodb-instansen.

    IMHO ett bättre tillvägagångssätt skulle vara att lägga till extra variabler som följande:

    • MONGO_APPLICATION_DATABASE
    • MONGO_APPLICATION_USERNAME
    • MONGO_APPLICATION_PASSWORD

    Lägg sedan till ett bash-skript som skapar användaren och tilldelar det till databasen genom att använda miljövariabler (du måste montera det till 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 lägg till en volym till din nuvarande lista över volymer

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

    Och ta slutligen bort denna variabel MONGO_INITDB_DATABASE eftersom det inte behövs

    Använd följande kommando för att logga in:

    docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
    
  • För .env fil jag är inte säker på vad som kan orsaka detta problem. har du några varningar när du använder den? Överväg också att kolla denna kommentar eller detta




  1. Fel:Kan inte starta klient | mongo-connect express-session

  2. ECS Fargate stöder inte bindningsfästen

  3. Spark-on-HBase:DataFrame-baserad HBase-kontakt

  4. Hur infogar man data i en mongodb-samling med c# 2.0-drivrutinen?