Primeros pasos con Docker Compose

por:

Instala servicios complejos mediante Docker Compose

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.

¿Qué es Docker Compose?

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. Este mecanismo permite utilizar varias imágenes y comunicarlas, para obtener los requisitos necesarios para hacer funcionar nuestra aplicación.

 

Ejemplo de uso de 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.

Preparando el fichero de despliegue

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 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
 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:

  • La base de datos, en este caso uso MySQL v5.7, le digo que me redirija el tráfico para poder acceder a la misma y además configuro algunos datos como las contraseñas o una primera base de datos.
  • El foro, en este caso se usa MyBB (al no ser una imagen oficial, hay que poner el usuario que la hizo disponible “fbmac”), he indicado la dependencia y también he redirigido el tráfico.

Realizando el despliegue con Docker Compose

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.

Docker compose arrancando

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:

Viendo el funcionamiento de docker compose en kitematic

Instalando MyBB

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:

instalando mybb

Ahora ya vemos que se ha conectado correctamente y se han creado las tablas necesarias:

creacion de tablas mybb

Finalmente, conseguimos que MyBB quede instalado:

MyBB queda instalado

Espero que os haya gustado la entrada.

Un saludo.

The following two tabs change content below.

Jorge Durán

Administrador, redactor y creador de Somos Binarios
Entusiasta de la tecnología desde los 10 años, desarrollador y creador de varios proyectos de software y autodidacta por naturaleza. Ingeniero Informático por la USAL