- Pro část ověřování:zkusili jste přidat
--authenticationDatabase adminabyste se mohli přihlásit? -
Ohledně
MONGO_INITDB_DATABASEnebude to účinné, pokud nemáte skript pod/docker-entrypoint-initdb.d/jak je uvedeno v docker-entrypoiny .sh který se používá v obrázku mongodb, takže můžete mít bash skript vdocker-entrypoint-initdb.d/s tím řečeno. -
Použití uživatele root jako vlastníka pro vaši aplikaci db není bezpečné, protože bude mít možnost ovládat vše v instanci mongodb.
IMHO lepším přístupem by bylo přidání dalších proměnných, jako jsou následující:
MONGO_APPLICATION_DATABASEMONGO_APPLICATION_USERNAMEMONGO_APPLICATION_PASSWORD
Poté přidejte bash skript, který vytvoří uživatele a přiřadí jej k databázi pomocí proměnných prostředí (musíte jej připojit k 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'}]});"V souboru docker-compose.yml přidejte svazek do aktuálního seznamu svazků
#docker-compose.yml volumes: - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}" - "./initmongo/:/docker-entrypoint-initdb.d/"A nakonec odstraňte tuto proměnnou
MONGO_INITDB_DATABASEprotože to není potřebaPro přihlášení použijte následující příkaz:
docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE" -
Pro
.envsoubor Nejsem si jistý, co by mohlo způsobit tento problém. máte nějaké varování při jeho používání? Zvažte také kontrolu tohoto komentáře nebo toto