- Para la parte de autenticación:¿ha intentado agregar
--authenticationDatabase adminpara poder iniciar sesión? -
Con respecto a
MONGO_INITDB_DATABASEno 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_DATABASEMONGO_APPLICATION_USERNAMEMONGO_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_DATABASEya 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
.envarchivo no estoy seguro de qué podría causar este problema. ¿Tienes alguna advertencia mientras lo usas? También considere revisar este comentario o esto