Este proyecto demuestra un sistema CRUD completo empaquetado con Docker usando un monorepo.
Proyecto realizado:
- Frontend Angular 18
- Backend ASP.NET Core 6 con Entity Framework
- SQL Server 2019
- Orquestado con Docker Compose
Cree los respectivos DockerFile tanto para el backend y frontend para asi construir imagenes personalizadas y ejecutar la solucion en los contenedores. Garantizando el despliegue y ejecucion en cualquier entorno compatible con DOcker.
Segunda parte automatización con CI/CD
— Gitlab — Docker Hub — WatchTower
Empecé a exponer los Dockerfile que estaban ignorados en mi .gitignore ya que en entorno local no había problema si los ignoraba. Migre el proyecto a Gitlab para configurar CI/CD, en este caso fue necesario incluir los Dockerfile para utilizarlos con el runner de Gitlab y así correr mi pipeline. Vinculando Gitlab con Docker Hub por medio de el token proporcionado por Docker Hub para guardarla como una variable protegida en la sección de CI/CD Variables (usando esta variable en mi pipeline), con esto tendríamos los permisos necesarios para realizar el push de la imagen ya sea backend o frontend. Al hacer un commit en el repositorio de Gitlab, seguido de una nueva release que activa el pipeline, este pipeline ejecuta la build y dispara el push con la nueva version. WatchTower se encarga de detectar automáticamente la nueva imagen, detiene la anterior, elimina la antigua imagen y recrea el contenedor con los nuevos cambios.
De esta forma tendríamos el CI que se realiza a partir de un commit/push y al generar la release dispara el cambio automático de nuestra imagen. Para el CD una vez hagamos el release se crea una nueva imagen la cual publicamos en DockerHub, con WatchTower detectamos los cambios y actualiza automáticamente el contenedor en ejecución que tenemos con el docker-compuse up.






