Con el gran avance de la tecnología y la increíble cantidad de herramientas que un programador Web debería conocer, uno de los problemas más comunes suele ser el crear contenedores de bases de datos en docker, y ejecutar las aplicaciones en distintas máquinas, con distintas librerías, dependencias o configuraciones de sistema.
Con Docker podemos solucionar este problema ya que nos ayuda a generar un «paquete» de software con las dependencias necesarias para crear y administrar fácilmente contenedores ligeros y portátiles. Esto también incluye a los motores de bases de datos que, de hecho, es uno de sus usos más comunes. En lugar de instalar y configurar manualmente cada base de datos, podemos usar imágenes de Docker para crearlas rápidamente.
Con esto en mente, te vamos a enseñar cómo crear contenedores de bases de datos en docker y usar estas imágenes para que instales tu base de datos favorita.
Te puede interesar:
Pre-requisitos para crear contenedores de bases de datos en docker
- Docker instalado en tu máquina o en tu Cloud Server con una imagen Click & Go.
- Docker Compose instalado.
- Tener una cuenta en Docker Hub (opcional).
- Descargar Docker Desktop para Windows o Mac.
Crear contenedores de bases de datos en Docker
Para empezar, vamos a crear un contenedor de la Base de Datos que tú desees. En Docker Hub podemos buscar las imágenes oficiales de las Bases de Datos más populares, por ejemplo MongoDB, MySQL o PostgreSQL. Hay muchas más que puedes encontrar en el repositorio de imágenes de Docker, pero en esta guía veremos las tres mencionadas.
Buscamos la imagen como “mongo”. Asegúrate de que tenga la etiqueta “Docker Official Image”.
Para crear el contenedor usamos el siguiente comando:
docker container run --name my-mongo-db -p 27017:27017 -d mongo
- docker container run: comando de Docker para crear un contenedor.
- --name: nombre del contenedor.
- -p: importante para asignar el puerto a exponer para conectarte a la Base de Datos. Por defecto el puerto que ofrece Mongo es 27017.
- -d: significa “Detached” y crea el contenedor sin “atar” la terminal.
Buscamos la imagen como “mysql”. Asegúrate de que tenga la etiqueta “Docker Official Image”.
Para crear el contenedor usamos el siguiente comando:
docker container run --name mysql-db -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql
docker container run
: comando de Docker para crear un contenedor.--name
: nombre del contenedor.- -e: significa “Environment” y usa
MYSQL_ROOT_PASSWORD
para definir la contraseña por defecto del usuarioroot
en el contenedor. -p
: importante para asignar el puerto a exponer para conectarte a la Base de Datos. Por defecto el puerto que ofrece mySQL es3306
.-d
: significa “Detached” y crea el contenedor sin “atar” la terminal.
Buscamos la imagen como “postgres”. Asegúrate de que tenga la etiqueta “Docker Official Image”.
Para crear el contenedor usamos el siguiente comando:
docker container run --name my-postgres-db -e POSTGRES_PASSWORD=my-secret-pw -p 5432:5432 -d postgres
Docker container run
: comando de Docker para crear un contenedor.--name
: nombre del contenedor.- -e: significa “Environment” y usa
POSTGRES_PASSWORD
para definir la contraseña por defecto del usuarioroot
en el contenedor. -p
: importante para asignar el puerto a exponer para conectarte a la Base de Datos. Por defecto el puerto que ofrece postgreSQL es5432
.-d
: significa “Detached” y crea el contenedor sin “atar” la terminal.
Conectarse a la Base de Datos
Para conectarte a la base de datos tienes que utilizar localhost:puerto_de_la_DB, y podrás utilizarla como cualquier otra base de datos. También puedes usar el comando de Docker para conectarte por la terminal.
docker exec -it my-mongo-db mongo
docker exec -it mysql-db bash
docker exec -it my-postgres-db psql -U postgres
Usar Docker-Compose para tus proyectos
La opción anterior es muy útil en general, pero es una buena práctica utilizar bases de datos específicas para cada proyectos, generando un contenedor particular para cada caso. Para eso, necesitamos instalar Docker Compose y crear un archivo docker-compose.yml
.
version: '3'
services:
db-mongo:
image: mongo
restart: always
container_name: my-mongo-db
ports:
- 27017:27017
volumes:
- ./db-volume:/var/lib/postgresql/data
version: '3'
services:
db-mysql:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
container_name: mysql-db
ports:
- 3306:3306
volumes:
- ./db-volume:/var/lib/mysql
version: '3'
services:
db-postgres:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: my-secret-pw
container_name: my-postgres-db
ports:
- 5432:5432
volumes:
- ./db-volume:/var/lib/postgresql/data
Una vez que tienes tu docker-compose listo, todo lo que tienes que hacer es usar el comando:
docker-compose up -d
Y si deseas destruir ese contenedor, usa el comando:
docker-compose down
Buenas prácticas
Ahora, algunas recomendaciones para mejorar tu experiencia al momento de crear contenedores de bases de datos en docker:
- Procura utilizar siempre una tag estable y fija (por ejemplo
mongo:5.0.0
). En lo posible, evita la taglatest
. - Revisa la documentación oficial de Docker y los repositorios de cada base de datos. Suelen contener mucha información útil para expandir las posibilidades de tu contenedor.
- Elimina las imágenes de Docker que no estás usando para liberar espacio.
- Al terminar de utilizar un contenedor, lo mejor es detenerlo.
- No utilices el usuario
root
en la base de datos. De preferencia, crea un nuevo super-usuario. - Si usas Windows o Mac, puedes usar Docker Desktop, una interfaz gráfica para gestionar tus imágenes, contenedores, y otras opciones de Docker.
Conclusión
Como hemos podido ver, Docker ofrece una excelente forma de tener una o más bases de datos en tu computadora sin saturarla, teniendo la posibilidad de tener tu entorno aislado para cada proyecto sin comprometer los datos de otros contenedores, ni mezclándola entre ellos. Todo de forma muy sencilla y rápida.
Prueba Docker en tu cloud server y bríndale a tu aplicación todo el poder de la nube. Visita DonWeb Cloud,