{"id":20296520,"url":"https://github.com/0gis0/youtube-docker-bake","last_synced_at":"2026-05-08T21:31:33.243Z","repository":{"id":261043185,"uuid":"877525652","full_name":"0GiS0/youtube-docker-bake","owner":"0GiS0","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-10T08:55:28.000Z","size":3075,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-10T10:23:16.850Z","etag":null,"topics":["docker","docker-bake","returngis"],"latest_commit_sha":null,"homepage":"https://youtu.be/_lzDrXJssw8","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0GiS0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-23T19:55:54.000Z","updated_at":"2025-11-10T08:55:33.000Z","dependencies_parsed_at":"2024-12-04T08:23:06.631Z","dependency_job_id":"9a758536-a550-4593-add6-ce862f062e7b","html_url":"https://github.com/0GiS0/youtube-docker-bake","commit_stats":null,"previous_names":["0gis0/youtube-docker-bake"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/0GiS0/youtube-docker-bake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0GiS0%2Fyoutube-docker-bake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0GiS0%2Fyoutube-docker-bake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0GiS0%2Fyoutube-docker-bake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0GiS0%2Fyoutube-docker-bake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0GiS0","download_url":"https://codeload.github.com/0GiS0/youtube-docker-bake/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0GiS0%2Fyoutube-docker-bake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32798247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-bake","returngis"],"created_at":"2024-11-14T15:39:11.395Z","updated_at":"2026-05-08T21:31:33.237Z","avatar_url":"https://github.com/0GiS0.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker Bake - Builds como Código\n\n\u003cdiv align=\"center\"\u003e\n\n[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UC140iBrEZbOtvxWsJ-Tb0lQ?style=for-the-badge\u0026logo=youtube\u0026logoColor=white\u0026color=red)](https://www.youtube.com/c/GiselaTorres?sub_confirmation=1)\n[![GitHub followers](https://img.shields.io/github/followers/0GiS0?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/0GiS0)\n[![LinkedIn Follow](https://img.shields.io/badge/LinkedIn-Sígueme-blue?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/giselatorresbuitrago/)\n[![X Follow](https://img.shields.io/badge/X-Sígueme-black?style=for-the-badge\u0026logo=x\u0026logoColor=white)](https://twitter.com/0GiS0)\n\n\u003c/div\u003e\n\n---\n\n¡Hola developer 👋🏻! Este repositorio contiene las demos de Docker Bake, una herramienta que te permite usar archivos para definir la configuración y los parámetros de tus builds de Docker, permitiendo incluso lanzar múltiples builds de forma concurrente con una sola invocación.\n\n\u003ca href=\"https://youtu.be/_lzDrXJssw8\"\u003e\n \u003cimg src=\"https://img.youtube.com/vi/_lzDrXJssw8/maxresdefault.jpg\" alt=\"15. Docker Builds como código\" width=\"100%\" /\u003e\n\u003c/a\u003e\n\n---\n\n## 📑 Tabla de Contenidos\n- [Características](#características)\n- [Tecnologías](#tecnologías)\n- [Requisitos Previos](#requisitos-previos)\n- [Instalación](#instalación)\n- [Uso](#uso)\n  - [1. Configuración Básica](#1-configuración-básica)\n  - [2. Construir Múltiples Imágenes](#2-construir-múltiples-imágenes)\n  - [3. Generar Imagen Multiplataforma](#3-generar-imagen-multiplataforma)\n  - [4. Imágenes con Múltiples Contextos](#4-imágenes-con-múltiples-contextos)\n  - [5. Usar Otros Builders](#5-usar-otros-builders)\n  - [6. Exportar e Importar Caché](#6-exportar-e-importar-caché)\n  - [Validar Archivos Bake](#validar-archivos-bake)\n  - [Ejemplo Completo](#ejemplo-completo)\n- [Estructura del Proyecto](#estructura-del-proyecto)\n- [Sígueme en Mis Redes Sociales](#sígueme-en-mis-redes-sociales)\n\n---\n\n## ✨ Características\n\n- **Configuración como código**: Define tus builds de Docker usando archivos HCL (HashiCorp Configuration Language)\n- **Builds concurrentes**: Ejecuta múltiples builds en paralelo con un solo comando\n- **Soporte multiplataforma**: Genera imágenes para diferentes arquitecturas (ARM64, AMD64, 386)\n- **Múltiples contextos**: Combina contextos locales y remotos en tus builds\n- **Gestión de caché**: Importa y exporta caché para optimizar tus builds\n- **Builders personalizados**: Usa diferentes builders como Docker Build Cloud\n- **Validación**: Verifica que tus archivos de configuración estén correctamente definidos\n\n---\n\n## 🛠️ Tecnologías Utilizadas\n\n- **Docker BuildKit**: Motor de build avanzado de Docker\n- **Docker Bake**: Herramienta para gestionar builds como código\n- **HCL (HashiCorp Configuration Language)**: Lenguaje de configuración\n- **Nginx**: Servidor web para las demos\n- **.NET**: API de ejemplo (Tour of Heroes)\n- **Angular**: Aplicación web de ejemplo (Tour of Heroes)\n\n---\n\n## 📋 Requisitos Previos\n\n- Docker Desktop 4.0+ o Docker Engine 20.10+\n- Docker Buildx instalado y habilitado\n- Git para clonar el repositorio\n- (Opcional) Docker Build Cloud para demos avanzadas\n\n\u003e **Nota**: Docker Bake está incluido con Docker Buildx, que viene preinstalado con Docker Desktop.\n\n---\n\n## 🚀 Instalación\n\n### Paso 1: Clonar el repositorio\n```bash\ngit clone https://github.com/0GiS0/youtube-docker-bake.git\ncd youtube-docker-bake\n```\n\n### Paso 2: Verificar que Docker Buildx está disponible\n```bash\ndocker buildx version\n```\n\n### Paso 3: (Opcional) Crear un builder personalizado\n```bash\ndocker buildx create --name mybuilder --use\n```\n\n---\n\n## 💻 Uso\n\nDocker Bake te permite definir la configuración de tus builds en archivos `.hcl` en lugar de escribir comandos largos con múltiples parámetros. A continuación se muestran diferentes casos de uso:\n\n### 1. Configuración Básica\n\nAsí sería el comando si no tuvieramos esta configuración:\n\n```bash\ndocker build -t halloween:v1 .\n```\n\nEl archivo `docker-bake.hcl` contiene la configuración para este caso. Para lanzarlo hay que usar este comando:\n\n```bash\ndocker buildx bake\n```\n\n### 2. Construir Múltiples Imágenes\n\nImagínate que tienes que construir más de una imagen a la vez. Con Bake puedes hacerlo de forma sencilla. En lugar de lanzar estos dos comandos:\n\n```bash\ndocker build -t tour-of-heroes-api:v1 tour-of-heroes-api\ndocker build -t tour-of-heroes-web:v1 -f tour-of-heroes-angular/Dockerfile.gh-copilot tour-of-heroes-angular\n```\n\nEn el archivo `bake-multiple-images.hcl` se muestra cómo sería la configuración para este caso.\n\nPara lanzarlo hay que usar este comando:\n\n```bash\ndocker buildx bake --file bakes/bake-multiple-images.hcl\n```\n\n### 3. Generar Imagen Multiplataforma\n\nUna de las ventajas de usar BuildKit es que podemos generar imágenes multiplataforma:\n\n```bash\ndocker build --platform linux/arm64,linux/amd64,linux/386 -t halloween:v3 .\n\ndocker images --tree\n```\n\nSi quisieramos hacer esto mismo con Bake, la configuración sería la que se muestra en el archivo `bake-multiple-platforms.hcl`.\n\n```bash\ndocker buildx create --name mybuilder --use \n\ndocker buildx bake --file bakes/bake-multiple-platforms.hcl --load # --load does not work in ARM machines\n\ndocker images --tree\n```\n\n### 4. Imágenes con Múltiples Contextos\n\nOtra de las opciones avanzadas que podemos utilizar con BuildKit es la de poder tener múltiples contextos. En este caso, por ejemplo, podríamos tener un contexto local y otro remoto:\n\n```bash\ndocker build \\\n--build-context app=./halloween-content \\\n--build-context config=https://github.com/0GiS0/youtube-docker-buildx.git#main \\\n-t halloween:v5 \\\n-f Dockerfile.multicontext.remote .\n```\n\nEn el archivo bake-multicontext.hcl se muestra cómo sería la configuración para este caso.\n\n```bash\ndocker buildx bake --file bakes/bake-multicontext.hcl\n```\n\nPara probar el resultado puedes lanzar el siguiente comando:\n\n```bash\ndocker run --name halloween -p 8080:80 -d halloween:v6\ndocker rm -f halloween\n```\n\n\n### 5. Usar Otros Builders\n\nSi por ejemplo queremos usar un builder de Docker Build Cloud lo hacemos así:\n\n```bash\ndocker buildx create --driver cloud 0gis0/returngis\n\ndocker build --builder cloud-0gis0-returngis -t tour-of-heroes-api:v3 tour-of-heroes-api\n```\n\nY lo equivalente en bake estaría en el archivo `bake-other-builders.hcl`.\n\n```bash\ndocker buildx bake --file bakes/bake-other-builders.hcl --builder cloud-0gis0-returngis\n```\n\n\n### 6. Exportar e Importar Caché\n\nY ya por último, si quisieramos exportar/importar la cache, el comando sería:\n\n```bash\ndocker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-to type=local,dest=./cache --cache-from type=local,src=./cache -t tour-of-heroes-web:v3 .\n```\n\nY la configuración equivalente en bake estaría en el archivo `bake-cache.hcl`.\n\n```bash\ndocker buildx bake --file bakes/bake-cache.hcl --load\n```\n\n### Validar Archivos Bake\n\nPuedes usar el parámetro `--check` para comprobar que el archivo bake está bien definido:\n\n```bash\ndocker buildx bake --file bakes/bake-cache.hcl --check\n```\n\n### Ejemplo Completo\n\nY si juntamos todos los ejemplos en algo que pudiera ser un ejemplo real, tendríamos algo así:\n\n```bash\ndocker buildx bake --file bakes/bake-final.hcl\n```\n\n---\n\n## 📁 Estructura del Proyecto\n\n```\nyoutube-docker-bake/\n├── bakes/                              # Archivos de configuración Bake\n│   ├── bake-cache.hcl                 # Ejemplo de gestión de caché\n│   ├── bake-final.hcl                 # Ejemplo completo combinado\n│   ├── bake-multicontext.hcl          # Ejemplo de múltiples contextos\n│   ├── bake-multiple-images.hcl       # Ejemplo de múltiples imágenes\n│   ├── bake-multiple-platforms.hcl    # Ejemplo multiplataforma\n│   └── bake-other-builders.hcl        # Ejemplo de builders personalizados\n├── configuration/                      # Archivos de configuración\n├── docs/                              # Documentación e imágenes\n├── halloween-content/                 # Contenido estático para demo\n├── tour-of-heroes-angular/            # Aplicación Angular de ejemplo\n├── tour-of-heroes-api/                # API .NET de ejemplo\n├── docker-bake.hcl                    # Configuración básica de Bake\n├── Dockerfile                         # Dockerfile principal\n├── Dockerfile.multicontext.remote     # Dockerfile para multicontexto\n└── README.md                          # Este archivo\n```\n\n---\n\n## 🌐 Sígueme en Mis Redes Sociales\n\nSi te ha gustado este proyecto y quieres ver más contenido como este, no olvides suscribirte a mi canal de YouTube y seguirme en mis redes sociales:\n\n\u003cdiv align=\"center\"\u003e\n\n[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UC140iBrEZbOtvxWsJ-Tb0lQ?style=for-the-badge\u0026logo=youtube\u0026logoColor=white\u0026color=red)](https://www.youtube.com/c/GiselaTorres?sub_confirmation=1)\n[![GitHub followers](https://img.shields.io/github/followers/0GiS0?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/0GiS0)\n[![LinkedIn Follow](https://img.shields.io/badge/LinkedIn-Sígueme-blue?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/giselatorresbuitrago/)\n[![X Follow](https://img.shields.io/badge/X-Sígueme-black?style=for-the-badge\u0026logo=x\u0026logoColor=white)](https://twitter.com/0GiS0)\n\n\u003c/div\u003e\n\n---\n\n¡No te olvides de darle una estrella 🌟 al repositorio si te ha gustado el contenido!\n\n¡Nos vemos! 👋🏻","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0gis0%2Fyoutube-docker-bake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0gis0%2Fyoutube-docker-bake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0gis0%2Fyoutube-docker-bake/lists"}