You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Update README.md to enhance the agenda section with additional topics on bind mounts, volumes, and tmpfs mounts, and improve content clarity throughout the document.
-[📦 Publicar nuestras imágenes en Docker Hub](#-publicar-nuestras-imágenes-en-docker-hub)
19
+
-[� Docker Build Checks](#-docker-build-checks)
20
+
-[�📦 Publicar nuestras imágenes en Docker Hub](#-publicar-nuestras-imágenes-en-docker-hub)
20
21
-[📚 Resumen de lo aprendido](#-resumen-de-lo-aprendido)
21
22
22
23
---
@@ -293,16 +294,305 @@ docker buildx bake
293
294
docker buildx bake doom-web-multi
294
295
```
295
296
296
-
### 💡 Ventajas de usar Bake
297
+
---
298
+
299
+
## 🔍 Docker Build Checks
300
+
301
+
**Docker Build Checks** es una característica beta introducida en Dockerfile 1.8 que te permite validar tu configuración de build y realizar una serie de verificaciones antes de ejecutar tu build. Es como un **linter avanzado** para tu Dockerfile y opciones de build, o un modo de **dry-run** para builds. 🎯
302
+
303
+
### 🌟 ¿Por qué usar Build Checks?
304
+
305
+
-**✅ Validación temprana**: Detecta problemas antes de ejecutar el build
306
+
-**📋 Mejores prácticas**: Asegura que tu Dockerfile sigue las recomendaciones actuales
307
+
-**🚫 Anti-patrones**: Identifica patrones problemáticos en tu configuración
308
+
-**🔒 Seguridad**: Ayuda a detectar configuraciones inseguras
309
+
-**⚡ Eficiencia**: Ahorra tiempo evitando builds fallidos
310
+
311
+
### 🛠️ Requisitos
312
+
313
+
-**Buildx**: versión 0.15.0 o posterior
314
+
-**docker/build-push-action**: versión 6.6.0 o posterior
315
+
-**docker/bake-action**: versión 5.6.0 o posterior
316
+
317
+
### 🚀 Uso básico
318
+
319
+
Por defecto, los checks se ejecutan automáticamente cuando haces un build:
320
+
321
+
```bash
322
+
docker build .
323
+
```
324
+
325
+
**Salida de ejemplo:**
326
+
```
327
+
[+] Building 3.5s (11/11) FINISHED
328
+
...
329
+
330
+
1 warning found (use --debug to expand):
331
+
- JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 7)
332
+
```
333
+
334
+
### 🔍 Verificar sin construir
335
+
336
+
Para ejecutar solo los checks sin construir la imagen:
337
+
338
+
```bash
339
+
docker build --check .
340
+
```
341
+
342
+
**Ejemplo de salida detallada:**
343
+
```
344
+
[+] Building 1.5s (5/5) FINISHED
345
+
=> [internal] connecting to local controller
346
+
=> [internal] load build definition from Dockerfile
|**StageNameCasing**| Nombres de stage deberían estar en minúsculas |`FROM alpine AS BASE_STAGE` ❌ |
525
+
|**FromAsCasing**| La palabra AS debería estar en mayúsculas |`FROM alpine as base` ❌ |
526
+
|**NoEmptyCommand**| Comandos no deberían estar vacíos |`RUN` ❌ |
527
+
|**UndefinedVariable**| Variables no definidas en ARG |`RUN echo $UNDEFINED_VAR` ❌ |
528
+
529
+
### 📊 Integración con CI/CD
530
+
531
+
#### GitHub Actions
532
+
533
+
```yaml
534
+
name: Docker Build with Checks
535
+
on: [push, pull_request]
536
+
537
+
jobs:
538
+
build:
539
+
runs-on: ubuntu-latest
540
+
steps:
541
+
- uses: actions/checkout@v4
542
+
543
+
- name: Set up Docker Buildx
544
+
uses: docker/setup-buildx-action@v3
545
+
546
+
- name: Build with checks
547
+
uses: docker/build-push-action@v6.6.0
548
+
with:
549
+
context: .
550
+
push: false
551
+
build-args: |
552
+
BUILDKIT_DOCKERFILE_CHECK=error=true
553
+
```
554
+
555
+
Los checks aparecerán como anotaciones en las pull requests de GitHub! 📝
556
+
557
+
### 💡 Mejores prácticas
558
+
559
+
1. **🎯 Usa checks desde el inicio**: Integra checks en tu workflow de desarrollo
560
+
2. **⚠️ Trata warnings como errores**: Usa `check=error=true` en producción
561
+
3. **📋 Documenta excepciones**: Si skips checks, documenta por qué
562
+
4. **🔄 Actualiza regularmente**: Los checks evolucionan con las mejores prácticas
563
+
5. **👥 Estandariza en equipo**: Usa la misma configuración en todo el proyecto
564
+
565
+
### 🎯 Ejercicio práctico
566
+
567
+
1. Ejecuta checks en nuestro Dockerfile actual:
568
+
```bash
569
+
cd doom-web
570
+
docker build --check .
571
+
```
572
+
573
+
2. Corrige los warnings encontrados creando un `Dockerfile.best-practices`
574
+
575
+
3. Añade la configuración a tu `docker-bake.hcl`:
576
+
```hcl
577
+
target "doom-web-validated" {
578
+
context = "."
579
+
dockerfile = "Dockerfile.best-practices"
580
+
tags = ["doom-web:validated"]
581
+
args = {
582
+
BUILDKIT_DOCKERFILE_CHECK = "error=true"
583
+
}
584
+
}
585
+
```
586
+
587
+
4. Prueba el build con checks estrictos:
588
+
```bash
589
+
docker buildx bake doom-web-validated
590
+
```
303
591
304
592
> [!TIP]
305
-
> 💡 **Consejo**: Instala la [extensión de Docker para VS Code](https://marketplace.visualstudio.com/items?itemName=docker.docker) para obtener linting y navegación de código en archivos Bake.
593
+
> 💡 **Consejo**: Instala la [extensión de Docker para VS Code](https://marketplace.visualstudio.com/items?itemName=docker.docker) para obtener linting en tiempo real de tu Dockerfile.
594
+
595
+
---
306
596
307
597
## 📦 Publicar nuestras imágenes en Docker Hub
308
598
@@ -399,17 +689,29 @@ En este módulo hemos cubierto los aspectos fundamentales de la contenerización
399
689
- Builds concurrentes y paralelos
400
690
- Mejor organización para proyectos complejos
401
691
402
-
5.**📦 Publicación en Docker Hub**: Distribución de imágenes
692
+
5. **� Docker Build Checks**: Validación y linting avanzado
693
+
- Detección temprana de problemas en Dockerfiles
694
+
- Verificación de mejores prácticas de seguridad
695
+
- Integración con CI/CD para calidad de código
696
+
697
+
6. **�📦 Publicación en Docker Hub**: Distribución de imágenes
403
698
- Nomenclatura correcta de imágenes
404
699
- Autenticación y push de imágenes
405
700
- Gestión de tags y versiones
406
701
702
+
6. **🔍 Docker Build Checks**: Validación de configuración de builds
703
+
- Detección temprana de problemas
704
+
- Asegura el cumplimiento de mejores prácticas
705
+
- Identificación de configuraciones inseguras
706
+
407
707
### 🛠️ Herramientas exploradas:
408
708
409
709
- **Docker CLI**: Comandos básicos de construcción
410
710
- **VS Code Extension**: Generación automática de Dockerfiles
411
711
- **IA Tools**: Microsoft Edge Copilot y GitHub Copilot
412
712
- **Docker Buildx**: Funcionalidades avanzadas con Bake
713
+
- **Docker Build Checks**: Validación y linting de Dockerfiles
714
+
- **Docker Build Checks**: Validación y verificación de Dockerfiles
413
715
414
716
### ✨ Beneficios obtenidos:
415
717
@@ -423,9 +725,10 @@ En este módulo hemos cubierto los aspectos fundamentales de la contenerización
423
725
424
726
1. Experimentar con diferentes estrategias de multi-stage
425
727
2. Implementar Docker Bake en proyectos reales
426
-
3. Explorar Docker Compose para aplicaciones multi-contenedor
427
-
4. Aprender sobre orquestación con Kubernetes
428
-
5. Profundizar en seguridad de contenedores
728
+
3. Integrar Docker Build Checks en el workflow de desarrollo
729
+
4. Explorar Docker Compose para aplicaciones multi-contenedor
730
+
5. Aprender sobre orquestación con Kubernetes
731
+
6. Profundizar en seguridad de contenedores
429
732
430
733
> [!SUCCESS]
431
734
> 🎉 **¡Felicitaciones!** Ya dominas los fundamentos de la contenerización. Estás listo para el siguiente nivel: orquestación de contenedores.
0 commit comments