- Para la parte de autenticación:¿ha intentado agregar
--authenticationDatabase admin
para poder iniciar sesión? -
Con respecto a
MONGO_INITDB_DATABASE
no será efectivo a menos que tenga un script en/docker-entrypoint-initdb.d/
como se muestra en docker-entrypoiny .sh que se usa en la imagen mongodb para que pueda tener un script bash endocker-entrypoint-initdb.d/
dicho esto. -
El uso del usuario raíz como propietario de la base de datos de su aplicación no es una cuestión de seguridad, ya que tendrá la capacidad de controlar todo en la instancia de mongodb.
En mi humilde opinión, un mejor enfoque sería agregar variables adicionales como las siguientes:
MONGO_APPLICATION_DATABASE
MONGO_APPLICATION_USERNAME
MONGO_APPLICATION_PASSWORD
Luego, agregue un script bash que creará el usuario y lo asignará a la base de datos mediante el uso de variables de entorno (debe montarlo en 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'}]});"
En docker-compose.yml agregue un volumen a su lista actual de volúmenes
#docker-compose.yml volumes: - ".${MONGO_DATA_DIR}:${MONGO_DATA_DIR}" - "./initmongo/:/docker-entrypoint-initdb.d/"
Y finalmente elimine esta variable
MONGO_INITDB_DATABASE
ya que no hay necesidad de elloPara iniciar sesión utilice el siguiente comando:
docker exec -it container_name mongo -u "$MONGO_APPLICATION_USERNAME" -p "$MONGO_APPLICATION_PASSWORD" --authenticationDatabase "$MONGO_APPLICATION_DATABASE" "$MONGO_APPLICATION_DATABASE"
-
Para
.env
archivo no estoy seguro de qué podría causar este problema. ¿Tienes alguna advertencia mientras lo usas? También considere revisar este comentario o esto