- Untuk bagian autentikasi:sudahkah Anda mencoba menambahkan
--authenticationDatabase admin
agar bisa login ? -
Mengenai
MONGO_INITDB_DATABASE
itu 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_DATABASE
MONGO_APPLICATION_USERNAME
MONGO_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_DATABASE
karena 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
.env
file saya tidak yakin apa yang dapat menyebabkan masalah ini. apakah Anda memiliki peringatan saat menggunakannya? Pertimbangkan juga untuk memeriksa komentar ini atau ini