Este es uno de los capítulos del tutorial Tutorial de Docker. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
Desde luego que la tecnología de los contenedores nos ha traído muchas ventajas, sobre todo en lo que se refiere al despliegue de tu propia aplicación. Despliegue de tu propia aplicación que puedes realizar sin preocuparte del host en el que vaya a caer. Ni te preocupas del sistema operativo, ni de la versión, ni de las librerías que están o no están instaladas. En fin, que como tu bien, sabes, no te tienes que preocupar de nada. Bueno, de nada, de nada, no es así. Te tienes que preocupar de crear las imágenes y que estas estén actualizadas. Sin embargo, esto no es tan problemático como podría aparentar a primera vista. Y no es tan problemático, por el hecho de que Docker Hub te ofrece posibilidad de automatizar la creación de imágenes docker. Es decir, te permite crear imágenes docker automáticamente. No solo esto, sino que te permite automatizar otros procesos.
Así, en este nuevo capítulo del tutorial de docker, daremos unos pasos atrás para profundizar en Docker Hub. El objeto de volver sobre Docker Hub es precisamente, el de ver las posibilidades que te ofrece para automatizar la creación de imágenes docker y otras automatizaciones.
Crea imágenes docker automáticamente
Esto de automatizar la creación de imágenes docker, es un proceso mucho mas sencillo e intuitivo del que podrías pensar en un momento. En este sentido Docker Hub te lo ha puesto muy fácil, para que no te tengas que calentar mucho la cabeza
De esta manera Docker Hub, puede construir de forma automática tus imágenes a partir del código fuente que esté alojado en un repositorio externo. Un repositorio externo como puede ser GitHub, por ejemplo. De esta forma, cada vez que subas contenido a tu repositorio en GitHub, inmediatamente se creará la correspondiente imagen en tu repositorio de Docker Hub. Sencillo, ¿no te parece?
Un poco de configuración…
Cuando configures la construcción automática de imágenes, es posible establecer que ramas y etiquetas de tu repositorio en GitHub, que quieres que se construyan de forma automática en Docker Hub. De esta forma, para cada rama o etiqueta de GitHub, por ejemplo, puedes asignar una etiqueta en Docker Hub. Tan sencillo como esto.
Pero además, los chicos de Docker Hub, te lo ponen realmente fácil. Y es que para cada tipo de fuente, ya sea rama o etiqueta, te ofrece un interruptor para poner en marcha o detener la construcción automática de imágenes. Para que te hasgas una idea, a continuación encontrarás una captura de pantalla, de la automatización de creación de imágenes correspondiente al capítulo anterior de este tutorial, en el que te indiqué como crear una imagen docker desde cero,
Para realizar la configuración, tienes que ir al apartado Builds
y hacer clic sobre el botón Configure Automated Builds
que se encuentra en la parte superior derecha, y que se corresponde con la captura de pantalla anterior.
Aquí tienes que seleccionar el tipo de fuente y la etiqueta, así como los parámetros que necesites para construir tu imagen docker.
Probando tu configuración
Una vez ya tengas perfectamente configurada tu generación automática de imágenes docker, tan solo te queda dirigirte a tu repositorio local y hacer un commit
y un push
, y verás como de inmediato comienza la creación de tu imagen.
Evidentemente esto tiene muchas ventajas e implicaciones, ya que te desentiendes por completo de la creación de imágenes. No te tienes que preocupar por este trabajo. Y no solo esto, sino que además, te aseguras de que estas imágenes siempre estarán disponibles, dado que están alojadas en Docker Hub.
Mas automatización. Los webhooks.
Pero no solo esto, aún hay mas… Docker Hub te permite establecer o definir webhooks. Ya te hablé, en su momento sobre esto de los webhooks. En particular sobre como podías hacer para que tu Raspberry te avise con webhooks. Pues en este caso el concepto es el mismo.
Un webhook no es mas que una llamada http
que se efectúa cuando se produce un determinado hecho o situación. Esto te permite concatenar diferentes sucesos.
¿Que relación hay entre los webhooks y Docker Hub? Docker Hub te permite definir distintos webhooks, de forma que cada vez que se suba una nueva imagen a Docker Hub se disparen estos webhooks.
De esta manera, cada vez que crees una nueva imagen, puedes hacer que se realice un despliegue automático de la misma en tu infraestructura, sustituyendo una antigua versión de tu imagen docker, por una nueva versión de la misma.
Para definir los webhooks que necesites, solo tienes que ir al apartado de Webhooks de Docker Hub y establecer allí todos los que necesites, para conseguir de esta forma que el proceso que has definido se ponga en marcha cada vez que exista una nueva imagen docker disponible.
Conclusión
Es fundamental automatizar los procesos al máximo. Un proceso automatizado es un proceso que está pensado, mejor o peor, pero pensado. El resultado de esta automatización siempre es conocido. Si en este proceso automatizado te olvidas algo, este olvido será permanente, y una vez corregido, no se volverá a producir.
Por contra, un proceso manual es totalmente indeterminado. Que una vez te acuerdes de incluir una parte, no es garantía de que te acuerdes de incluirla en futuras ocasiones.
Por estas razones, mi insistencia en que automatices todos los procesos que puedas. Porque además de lo comentado anteriormente, el proceso automatizado, es susceptible de mejora, mientras que un proceso manual… simplemente, es un proceso manual.
Más información,
Imagen de portada de Hello I’m Nik 🇬🇧 en Unsplash