En esta entrada, la cual es continuación de nuestro manual de Docker, os enseñamos como montar vuestro propio entorno de producción con Docker Compose.
Tabla de contenidos
Docker compose es una herramienta creada por Docker, que permite crear un stack de contenedores intercomunicados, partiendo de distintas imágenes en un único equipo.
Como se ha comentado en entradas anteriores, Docker utiliza la tecnología de contenedores para desplegar imágenes. Estas imágenes suelen contener un servicio concreto, por ejemplo un sistema de bases de datos, un servidor web, un compilador específico etc. El gran problema que presenta este sistema es que, normalmente, vamos a necesitar de múltiples de estos servicios para poder hacer funcionar nuestro software. Un ejemplo de lo anterior es WordPress, el cual requiere de un servidor web con soporte para PHP y un sistema de bases de datos, para almacenar todos los datos de la página (usuarios, entradas, categorías, etc). La propuesta de Docker para resolver este tipo de configuraciones que requieren de servicios que están en diversas imágenes, es Docker Compose.
Lo primero que debemos hacer es instalar esta tecnología, para ello lo mejor es que sigáis el propio manual de los creadores.
Para este ejemplo he decidido utilizar MyBB, un excelente sistema de foros que usábamos antiguamente en Somos Binarios, el cual viene junto con un servidor web en una imagen. Pero como requisito presenta la necesidad de tener que utilizar una base de datos, así que vamos a utilizar la imagen de MySQL. Si buscaís un ejemplo de WordPress podéis utilizar el de la documentación oficial.
Docker Compose se basa en un fichero con extensión yml donde vamos a indicar que imagen queremos desplegar, cómo se va a configurar y de qué depende. Todas aquellas dependencias se van a ejecutar con anterioridad, para así poder realizar una instalación correcta.
Esta es mi configuración de despliegue:
version: '2' services: db: image: mysql:5.7 volumes: - "./.data/db:/var/lib/mysql" ports: - "3306:3306" restart: always environment: MYSQL_ROOT_PASSWORD: 1234 MYSQL_DATABASE: foro MYSQL_USER: pedro MYSQL_PASSWORD: 1234 mybb: depends_on: - db image: fbmac/mybb:latest links: - db ports: - "8000:80" restart: always
Como podéis ver hay dos servicios:
Para realizar el despliegue, lo único que hay que hacer es ejecutar el comando docker-compose up -d, desde la carpeta donde tenemos guardado el fichero yml.
Una vez que lo hacemos nos dirá que se ha creado db_1 y mybb_1, por ese orden.
Si usamos Kitematic, veremos lo siguiente:
Una vez que ya tenemos todo listo, procedemos a realizar la instalación de MyBB mediante la interfaz web.
Lo primero que hacemos es indicar los datos de nuestra base de datos:
Ahora ya vemos que se ha conectado correctamente y se han creado las tablas necesarias:
Finalmente, conseguimos que MyBB quede instalado:
Una de las preguntas más planteadas, es ¿cuál es la diferencia entre docker compose y kubernetes?
En definitiva, Docker compose es una herramienta para trabajar con varios contenedores a la vez y Kubernetes es un orquestador, lo que implica que tiene todo lo que provee docker compose y otra multitud de herramientas y opciones.
Espero que os haya gustado la entrada.
Un saludo.
Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…
Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…
Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…
Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…
Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…
Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…