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.
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.
- Introducción a Docker para principiantes
- Introducción a Docker – Parte 2
- Introducción a Docker – Parte 3
Cuéntanos: ¿Qué te ha parecido nuestra Introducción a Docker?