- Untuk bagian autentikasi:sudahkah Anda mencoba menambahkan
--authenticationDatabase adminagar bisa login ? -
Mengenai
MONGO_INITDB_DATABASEitu tidak akan efektif kecuali Anda memiliki skrip di bawah/docker-entrypoint-initdb.d/seperti yang ditunjukkan dalam docker-entrypoiny .sh yang digunakan dalam gambar mongodb sehingga Anda dapat memiliki skrip bash didocker-entrypoint-initdb.d/dengan itu. -
Menggunakan pengguna root sebagai pemilik db aplikasi Anda bukanlah keamanan yang bijaksana karena akan memiliki kemampuan untuk mengontrol segala sesuatu di instance mongodb.
IMHO pendekatan yang lebih baik akan menambahkan variabel tambahan seperti berikut:
MONGO_APPLICATION_DATABASEMONGO_APPLICATION_USERNAMEMONGO_APPLICATION_PASSWORD
Kemudian tambahkan skrip bash yang akan membuat pengguna dan menetapkannya ke database dengan menggunakan variabel lingkungan (Anda perlu memasangnya ke 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'}]});"Di docker-compose.yml tambahkan volume ke daftar volume Anda saat ini
#docker-compose.yml volumes: - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}" - "./initmongo/:/docker-entrypoint-initdb.d/"Dan akhirnya hapus variabel ini
MONGO_INITDB_DATABASEkarena tidak perlu untuk ituUntuk login gunakan perintah berikut:
docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE" -
Untuk
.envfile saya tidak yakin apa yang dapat menyebabkan masalah ini. apakah Anda memiliki peringatan saat menggunakannya? Pertimbangkan juga untuk memeriksa komentar ini atau ini