Introducción a Docker – Parte 4 (Microservicios)

Dificultad: Fácil
Tiempo de Lectura: 4 minutos

En esta oportunidad siguiendo con nuestra muestra de como utilizar Docker en nuestros ambientes de desarrollo y orientándonos netamente en hacer ejercicios prácticos, hoy queremos guiarlos en la implementación del tutorial Introducción a Docker: Micro servicios.

Esto es como dice la frase “divide y vencerás”, entonces la practica seria implementar una instalación de WordPress utilizando Docker-compose en donde puedes tener varios contenedores enlazados así podemos utilizar la imagen oficial de WordPress y MySQL que esta en Docker Hub.

Introducción a Docker: MicroServicios

El potente concepto de Microservicios está cambiando poco a poco la industria. Grandes servicios monolíticos están dando paso lentamente al enjambre microservicios pequeños y autónomos que trabajan en conjunto. El proceso va acompañado de otra tendencia del mercado: la contenerización. Juntos, ayudan a construir sistemas  sin precedentes. La contenerización cambia no sólo la arquitectura de los servicios, sino también la estructura de ambientes utilizados para crearlos.

Ahora, cuando el software se distribuye en contenedores, los desarrolladores tienen plena libertad para decidir qué aplicaciones necesitan. Como resultado, incluso los entornos complejos, como los servidores de grades bases de datos e infraestructura de análisis complejos pueden crear instancias en cuestión de segundos. El desarrollo de software se hace más fácil y más eficaz.

¿Qué es Docker Composer?

Docker composer es una herramienta para definir y ejecutar aplicaciones complejas con Docker , Docker Compose, se define como “Una aplicación multi-contenedor en un solo archivo, puedes desplegar una aplicación en un solo comando, que hace todo lo que hay que hacer para ponerlo en marcha.”

Funcionalidad

La función principal de Docker Composer es la creación de la arquitectura orientada a los microservicios, es decir, los contenedores y los vínculos entre ellos. Pero sin embargo esta gran herramienta es capaz de hacer mucho más, algunos ejemplo de lo que es capaz.

Crear Imagenes (Si esta en la logica esta presente en el DockerFile )

docker-compose build

Se pueden escalar contenedores de una forma sencilla

docker-compose scale SERVICE=3

Se pueden volver a ejecutar los contenedores que se han detenido

docker-compose up --no-recreate

Definir nuestro proyecto

  • Creamos una carpeta vacía para nuestro proyecto. Recuerda nombrar esta carpeta con algo que recuerdes fácilmente. Esta carpeta sera el contexto para la imagen que vamos a crear de la aplicación en este caso el WordPress, recuerda esta carpeta deberia contener solo los recursos necesarios para este proyecto.
mkdir wordpress-infra;
  • Ahora que ya estamos ubicados adentro de nuestra carpeta de nuestro proyecto procedemos a crear nuestro archivo llamado docker-compose.yaml que es en donde vamos a realizar las configuraciones de nuestro entorno de trabajo para nuestro proyecto de WordPress.
cd wordpress-infra;

touch docker-compose.yaml;
  • Ahora procedemos a crear el contenido de nuestro archivo docker-compose.yaml en donde especificaremos que queremos crear dos contenedores, el primer contenedor sera de MySQL que contendrá nuestra base de datos necesaria para ejecutar WordPress, luego necesitamos el contenedor de nuestro WordPress y que a la vez este ultimo contenedor este enlazado al de MySQL para que pueda entrar tranquilamente a realizar todas las operaciones en la base de datos.
version: '2'
services:
 db:
 image: mysql:5.7
 volumes:
 - "./.data/db:/var/lib/mysql"
 restart: always
 environment:
 MYSQL_ROOT_PASSWORD: wordpress
 MYSQL_DATABASE: wordpress
 MYSQL_USER: wordpress
 MYSQL_PASSWORD: wordpress

wordpress:
 depends_on:
 - db
 image: wordpress:latest
 links:
 - db
 ports:
 - "8000:80"
 restart: always
 environment:
 WORDPRESS_DB_HOST: db:3306
 WORDPRESS_DB_PASSWORD: wordpress

Nota: La carpeta./.data/db se creara de forma automática al mismo nivel en donde se encuentre el  docker-compose.yml y es persistente a cada cambio que haga el wordpress sobre esta base de datos.

Construimos el proyecto

Ahora el comando necesario para ejecutar nuestra configuración del proyecto es docker-compose up -d  este comando tomara todo lo configurado en el archivo docker-compose.yml y lo procesara en nuestro docker local, asi que vemos lo siguiente que nos debe mostrar.

El automáticamente descargara las imágenes necesaria he iniciara los contenedores tanto de WordPress como de la base de datos así como lo vemos a continuación

$ docker-compose up -d
Creating network "my_wordpress_default" with the default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
efd26ecc9548: Pull complete
a3ed95caeb02: Pull complete
...
Digest: sha256:34a0aca88e85f2efa5edff1cea77cf5d3147ad93545dbec99cfe705b03c520de
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
efd26ecc9548: Already exists
a3ed95caeb02: Pull complete
589a9d9a7c64: Pull complete
...
Digest: sha256:ed28506ae44d5def89075fd5c01456610cd6c64006addfe5210b8c675881aff6
Status: Downloaded newer image for wordpress:latest
Creating my_wordpress_db_1
Creating my_wordpress_wordpress_1

Ya podemos probar nuestro WordPress

Ya en este punto solo debemos entrar a la IP de nuestro docker por el puerto 8000 y nos mostrara la pantalla de la configuración de inicial de WordPress, en donde nos pide todos los datos para comenzar a utilizar WordPress.

wordpress-langwordpress-welcome

Conclusión

Hemos visto y definido qué es y para que nos ayuda Docker-Composer y lo indispensable que es hoy en día para la implementación de infraestructuras tanto simples que pueden ser para ambientes de desarrollo o aquellas más complejas que necesitan de alguna forma rápida poder crecer y ser escalables si que se tengan que hacer tantos procesos manuales. Esta metodología y el uso de Docker cada día se esta consolidando más a nivel de Datacenters y de programadores que ya ven viable poder crear imágenes, contenedores para sus aplicaciones y poder ser más eficientes.

De la misma forma en que mostramos en esta guía como implementar un simple WordPress en pocos pasos, imagina montar un servicio un poco más complejo en donde enlaces varios contenedores entre ellos mismos y a partir de imágenes creadas por ti en donde tengas tu app.

En esta serie de post hemos explicado Docker desde el nivel más básico hasta este nivel que es la forma más avanzada para realizar configuraciones, así que ya puedes navegar sobre todos nuestros artículos de Docker en la siguiente lista de enlaces.

  1. Introducción a Docker para principiantes
  2. Introducción a Docker – Parte 2
  3. Introducción a Docker – Parte 3

Cuéntanos: ¿Qué te ha parecido nuestra Introducción a Docker?


¿Te resultó útil el artículo? Compártelo con tus colegas: