MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB und Docker über docker-compose auth error und initialisieren db nicht

  • Für den Authentifizierungsteil:Haben Sie versucht, --authenticationDatabase admin hinzuzufügen um sich anmelden zu können ?
  • Bezüglich MONGO_INITDB_DATABASE Es ist nur wirksam, wenn Sie ein Skript unter /docker-entrypoint-initdb.d/ haben wie im docker-entrypoiny gezeigt .sh das im Mongodb-Image verwendet wird, sodass Sie ein Bash-Skript in docker-entrypoint-initdb.d/ haben können wie gesagt.

  • Die Verwendung des Root-Benutzers als Eigentümer für Ihre Anwendungsdatenbank ist nicht sicherheitsrelevant, da er die Möglichkeit hat, alles in der Mongodb-Instanz zu kontrollieren.

    IMHO wäre ein besserer Ansatz das Hinzufügen zusätzlicher Variablen wie die folgenden:

    • MONGO_APPLICATION_DATABASE
    • MONGO_APPLICATION_USERNAME
    • MONGO_APPLICATION_PASSWORD

    Fügen Sie dann ein Bash-Skript hinzu, das den Benutzer erstellt und mithilfe von Umgebungsvariablen der Datenbank zuweist (Sie müssen es in docker-entrypoint-initdb.d einhängen):

    # 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'}]});"
    

    Fügen Sie in docker-compose.yml ein Volume zu Ihrer aktuellen Volume-Liste hinzu

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

    Und schließlich diese Variable MONGO_INITDB_DATABASE entfernen weil es nicht nötig ist

    Um sich anzumelden, verwenden Sie den folgenden Befehl:

    docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
    
  • Für die .env Ich bin mir nicht sicher, was dieses Problem verursachen könnte. Haben Sie irgendwelche Warnungen während der Verwendung? Sehen Sie sich auch diesen Kommentar an oder dies