🔄 Entendiendo la Configuración del Pipeline de CI/CD
Ahora que hemos configurado la conexión con GitHub y desplegado nuestra plantilla de CloudFormation, entendamos cómo está configurado nuestro pipeline de CI/CD para integrar Docker Build Cloud, Docker Scout y el despliegue en Amazon ECS.
📋 Descripción General de la Arquitectura del Pipeline
Nuestra plantilla de CloudFormation crea un pipeline de CI/CD completo con estos componentes clave:

- Etapa de Fuente (Source): Obtiene el código de tu repositorio de GitHub.
- Etapa de Construcción (Build): Usa Docker Build Cloud para una construcción eficiente de imágenes de contenedor.
- Etapa de Escaneo de Seguridad (Security Scan): Integra Docker Scout para la evaluación de vulnerabilidades.
- Etapa de Despliegue (Deploy): Despliega la aplicación en Amazon ECS.
🔍 Componentes Clave en la Plantilla de CloudFormation
1️⃣ Integración con Docker Build Cloud
La plantilla incluye un proyecto de CodeBuild configurado específicamente para usar Docker Build Cloud:
# Proyecto CodeBuild para la construcción Docker
DockerBuildProject:
Type: AWS::CodeBuild::Project
Properties:
Name: docker-build-cloud-project
Environment:
Type: ARM_CONTAINER
ComputeType: BUILD_GENERAL1_SMALL
Image: aws/codebuild/amazonlinux2-aarch64-standard:2.0
PrivilegedMode: true
Source:
Type: CODEPIPELINE
BuildSpec: |
version: 0.2
env:
secrets-manager:
DOCKER_USERNAME: "dockerhub-credentials:DOCKER_USERNAME"
DOCKER_TOKEN: "dockerhub-credentials:DOCKER_TOKEN"
phases:
pre_build:
commands:
- echo Iniciando sesión en Docker Hub...
- echo $DOCKER_TOKEN | docker login -u $DOCKER_USERNAME --password-stdin
- # Configuración de Docker Buildx...
build:
commands:
- echo Construyendo imagen con BuildKit...
- docker buildx build --platform linux/arm64 -t $DOCKER_USERNAME/rent-a-room:latest --push .
post_build:
commands:
- echo Generando imagedefinitions.json...
- echo '[{"name":"rent-a-room","imageUri":"'$DOCKER_USERNAME/rent-a-room:$IMAGE_TAG'"}]' > imagedefinitions.json🔹 Elementos Clave de la Configuración
| Elemento | Descripción | Beneficio |
|---|---|---|
| ARM_CONTAINER | Entorno de construcción basado en ARM. | Optimizado para imágenes ARM64. |
| PrivilegedMode: true | Habilita capacidades de Docker-in-Docker. | Requerido para Docker Buildx. |
| --platform linux/arm64 | Especifica la arquitectura de destino. | Asegura compatibilidad con instancias ECS basadas en ARM. |
| --push | Envía directamente al registro. | Agiliza el proceso de construcción y envío. |
2️⃣ Integración de Seguridad con Docker Scout
El proyecto de CodeBuild dedicado al escaneo de seguridad:
# Proyecto CodeBuild para Escaneo con Docker Scout
DockerScoutProject:
Type: AWS::CodeBuild::Project
Properties:
BuildSpec: |
phases:
build:
commands:
- echo Ejecutando escaneo de seguridad con Docker Scout...
- >
docker run --rm
-e DOCKER_SCOUT_HUB_USER=$DOCKER_USERNAME
-e DOCKER_SCOUT_HUB_PASSWORD=$DOCKER_TOKEN
docker/scout-cli cves $DOCKER_USERNAME/rent-a-room:$IMAGE_TAG --exit-code --only-severity critical,high🔹 Elementos Clave de Docker Scout
| Elemento | Descripción | Beneficio |
|---|---|---|
| docker/scout-cli | Usa la CLI de Scout en un contenedor. | No requiere instalación por separado. |
| --exit-code --only-severity critical,high | Implementa compuertas de seguridad (security gates). | Falla la construcción si se hallan vulnerabilidades críticas o altas. |
| recommendations | Sugerencias de mejora. | Proporciona acciones concretas de seguridad. |
3️⃣ Estructura Completa del Pipeline
| Etapa | Propósito | Componentes Clave |
|---|---|---|
| Source | Obtener código de GitHub. | Conexión CodeStar, Repo GitHub. |
| Build | Construir imagen Docker. | Docker Build Cloud, Buildx, Opt. ARM64. |
| Security Scan | Escanear vulnerabilidades. | Docker Scout, Security gates, Recomendaciones. |
| Deploy | Desplegar en ECS. | Amazon ECS, Despliegue de contenedor. |
💡 Integración de Tecnologías Docker
- Docker Build Cloud con Buildx: Optimiza el rendimiento con construcción distribuida y soporte para ARM64 (compatible con AWS Graviton).
- Docker Scout: Previene el despliegue de imágenes vulnerables y genera informes detallados.
- Docker Hub: Almacena imágenes de forma segura y permite el despliegue fluido a Amazon ECS.
🔍 Soporte Multi-Arquitectura
Aunque nuestro pipeline está optimizado para ARM64, Docker Build Cloud permite construir para múltiples arquitecturas simultáneamente:
docker buildx build --platform linux/amd64,linux/arm64 -t usuario/app:latest --push .Esto permite:
- Soporte AWS Graviton: Mejor relación precio-rendimiento.
- Flexibilidad: Ejecución en cualquier tipo de instancia ECS.
- Futuro: Compatibilidad asegurada ante la diversificación de arquitecturas de CPU.
🚀 Próximos Pasos
Ahora que entiendes la configuración, completemos el workshop:
- Realizando un cambio en la aplicación.
- Disparando el pipeline.
- Observando el proceso de construcción, escaneo y despliegue.
¡En la siguiente sección, realizaremos un cambio personalizado y veremos nuestro pipeline en acción!
