Cuando una aplicación no cabe en un solo contenedor por la existencia de varios tier, o simplemente nodos que sirven para almacenar datos, es necesario usar Docker compose para describir de forma repetible la relación que tales contenedores tienen entre si.
En esta práctica se trata de diseñar, usando docker-compose
y
describiendo la infraestructura mediante un fichero
docker-compose.yml
, un servicio que incluya varios contenedores,
incluyendo uno cuyo contenido exclusivo sea almacenar datos.
Haber pasado todos los tests hasta el hito anterior.
En general, el despliegue de una aplicación incluirá una serie de servicios que
invocarán a la aplicación, o bien serán invocados desde ella. Estos servicios
van desde simples servidores web, hasta enrutadores más complejos o servicios
para almacenar datos. Estos servicios tienen que componerse para poder
desplegarse, y para ello hay una serie de herramientas; entre ellas, nos
fijaremos en docker-compose
es una
herramienta útil en entornos de desarrollo o de prueba, e incluso en producción,
siempre que no se requieran escalado de cada uno de los nodos u algún tipo de
orquestación complicada, para lo que habría que usar Kubernetes.
No es la única herramienta de composición de servicios, y su utilidad es principalmente en entornos de desarrollo, más que de producción. Sin embargo, como introducción a los conceptos de despliegue es bastante útil.
Lo importante es que la creación de ese entorno de pruebas sea reproducible. El énfasis de esta práctica es en la creación y uso de este entorno de pruebas, por lo que también se valorará cómo se han diseñado esas pruebas y lo realista que es ese entorno creado, es decir, la existencia de un programa real que implemente un servicio web de forma que se pueda monitorizar desde fuera si está funcionando o no.
En este hito tendrán que llevarse a la práctica diferentes conceptos relacionados con la composición de servicios.
- Uso de contenedores de datos (o volúmenes), que permitan componer de forma variable las fuentes de datos que se van a usar en un clúster (o grupo de servicios) determinado.
- Aplicación (map) de puertos, interna y externa, de forma que se puedan usar y testear los servicios.
- Configuración del clúster para que todos los contenedores tengan la configuración que necesitan.
- Configuración-como-código, para que los servicios sean capaces de arrancar correctamente independientemente del entorno en el que se encuentren (un clúster, una instancia, o un test local).
La URL del proyecto se subirá al fichero con el formato habitual.
El fichero docker-compose.yml
debe estar en el directorio principal
del proyecto. Habrá que añadir un test que construya el clúster y
responda a algunas peticiones; en la clave test-docker-compose
de
cc.yaml
habrá que indicar el nombre del fichero.
- 2 puntos: documentación y justificación de la estructura del clúster.
- 2 puntos: documentación y justificación de la configuración de cada uno de los contenedores que lo componen.
- 2 puntos: documentación del fichero de composición.
- 2 puntos: testeo del mismo. Se recibirán los dos puntos completos si se testea más extensivamente.
- 2 puntos: pruebas de velocidad del mismo, grado de terminación del proyecto, despliegue a algún servicio cloud.
Si la aplicación no funciona, no se realiza de forma individual o no están los fuentes publicados, la práctica estará suspensa.