- 認証部分の場合:
--authenticationDatabase admin
を追加しようとしましたか ログインできるようにするには? -
MONGO_INITDB_DATABASE
について/docker-entrypoint-initdb.d/
の下にスクリプトがない限り、効果はありません。 docker-entrypoinyに示されているように.sh これはmongodbイメージで使用されるため、docker-entrypoint-initdb.d/
でbashスクリプトを使用できます。 そうは言っても。 -
rootユーザーをアプリケーションデータベースの所有者として使用することは、mongodbインスタンス内のすべてを制御する機能を備えているため、セキュリティ上賢明ではありません。
IMHOのより良いアプローチは、次のような変数を追加することです。
-
MONGO_APPLICATION_DATABASE
-
MONGO_APPLICATION_USERNAME
-
MONGO_APPLICATION_PASSWORD
次に、ユーザーを作成し、環境変数を使用してデータベースに割り当てるbashスクリプトを追加します(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'}]});"
docker-compose.ymlで、現在のボリュームリストにボリュームを追加します
#docker-compose.yml volumes: - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}" - "./initmongo/:/docker-entrypoint-initdb.d/"
そして最後に、この変数
MONGO_INITDB_DATABASE
を削除します 必要ないのでログインするには、次のコマンドを使用します。
docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
-
-
.env
の場合 ファイルこの問題の原因がわかりません。使用中に警告はありますか? このコメント も確認することを検討してください またはこれ