A continuación vamos a mostrar como estoy instalando mongodb en un contenedor docker.
Prerequisitos
- AMD A4 8GB RAM y SSD 480
- Ubuntu Desktop 20.04 LTS
- Docker CE
Instalación
- Baja la imagen
$ docker pull mongo
- Ten a la mano los siguientes datos que debes de poner para asegurar cuando levantes el servidor dentro del contenedor.
- ruta donde se va almacenar los datos.
- usuario y contraseña con el cual se va a generar el root del mongo.
- puerto en el cual se va a natear el contenedor al host.
- Crea el contenedor con la imagen que acabas de bajar poniendo escribiendo los parámetros, en el archivo mongo.yml
$ cat > mongo-docker.yml
# Use root/example as user/password credentials
version: '3.1'
services:
mongo:
image: mongo
restart: always
container_name: docker-mongodb
ports:
- 27017:27017
volumes:
- /mnt/secondary/data/db:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: xxxxxx
$ chmod 777 mongo.yml
- tambien puedes crear el contenedor con la imagen que acabas de bajar escribiendo los parámetros en la linea de comando
$ docker run --name docker-mongo
-v /home/user/data/mongodb:/data/db
-p 27017:27017
-e MONGO_INITDB_ROOT_USERNAME=administrator
-e MONGO_INITDB_ROOT_PASSWORD=XXXXX
--restart always -d mongo
- ahora si puedes conectarte desde el host del contenedor a mongodb, y ya estas listo para trabajar, con la siguiente sentencia.
$ mongo -u administrador -p xxxxx --authenticationDatabase admin
- tambien puedes conectarte desde un equipo que no sea el host con la siguiente sentencia.
$ mongo --host xxx.xxx.xxx.xxx -u administrator -p xxxxxxx --authenticationDatabase admin
Cómo configurar un servidor para producción
- Las características que debe de tener un servidor de producción,
- Debe estar cifrada la comunicación con ssl
- Debe de tener un administrator, con una contraseña fuerte
- Debes de tener un usuario por cada base de datos que crees en el servidor.
- Debe de tener un respaldo de la base de datos.
- Debes de tener configurado un esquema de recuperación del servidor.
- Debes de cifrar la comunicación con ssl
- Crea el usuario administrador de la base de datos.
$ mongo --host xxx.xxx.xxx.xxx -u administrator -p xxxxxxxxxx --authenticationDatabase admin
$ db.createUser(
{
user: "rrhh_dbo",
pwd: "xxxxxx",
roles: [ { role: "readWrite", db: "rrhh" } ]
}
)