Cómo usar .dockerignore para imágenes más pequeñas

Clase 12 de 34Curso de Docker Avanzado

Contenido del curso

Optimización Avanzada en Docker

Resumen

Optimiza tus imágenes de Docker desde el primer build con un enfoque claro: omite lo que no necesitas. Con práctica, usar imagen base pequeña, multi-stage y, sobre todo, .dockerignore se vuelve natural. Aquí entenderás cómo este archivo, análogo a .gitignore, te ayuda a excluir carpetas y configuraciones innecesarias para reducir drásticamente el tamaño de tus imágenes y evitar sorpresas al desplegar.

¿Qué resuelve .dockerignore en imágenes de Docker?

Usar .dockerignore es como aplicar el mismo criterio de .gitignore pero para tu imagen: no subes archivos que no deben estar en el contenedor. Al crear un proyecto .NET en Visual Studio, aparecen carpetas como OBJ y BIN que no hacen falta en la imagen; omitirlas es clave.

¿Cómo se relaciona con .gitignore?

  • Misma lógica: excluir archivos y carpetas que no deben empaquetarse.
  • Evita incluir artefactos de compilación: OBJ y BIN en .NET.
  • Excluye secretos y variables: archivos ENV cuando no se requieren en la imagen.

¿Por qué impacta en el tamaño?

  • Menos archivos copiados, menos capas y menos espacio ocupado.
  • Reduce ruido y riesgo de exponer configuraciones innecesarias.
  • Ejemplo práctico con configuración: se omitieron temporalmente appsettings.json y appsettings.Development.json para evidenciar el efecto, aunque no debe hacerse en un proyecto real.

¿Cómo configurarlo en .NET y construir la imagen?

Primero, crea el archivo .dockerignore. Visual Studio Code lo reconoce de inmediato (icono de la ballena en gris). Añade patrones como en .gitignore: carpetas y archivos a omitir durante el build de Docker.

¿Qué poner en .dockerignore?

obj/ bin/ *.env appsettings.json appsettings.Development.json

Nota: en el ejemplo se excluyeron los JSON para demostrar la omisión; no lo hagas en producción si son parte de la configuración necesaria.

¿Qué pasos seguir para construir y ejecutar?

  • Preparar el Dockerfile: actualizar el nombre del proyecto en las líneas indicadas para .NET (líneas 4, 8 y 15 según el archivo creado).
  • Construir la imagen con etiqueta.
  • Ejecutar el contenedor de forma interactiva.
# Ubicarse en la carpeta del proyecto cd Ignore # Construir imagen con etiqueta "ignorar" docker build -t ignorar . # Ejecutar de forma interactiva docker run -it ignorar

¿Cómo verificar en Docker Desktop?

  • Abrir Docker Desktop y entrar en la sección de containers.
  • Seleccionar el contenedor en ejecución (si no tiene nombre, Docker asigna uno por defecto).
  • Usar la pestaña exec y ejecutar ls para listar archivos.
  • Resultado inicial: no aparecen los JSON porque fueron omitidos por .dockerignore.
  • Luego, al quitar esos patrones del .dockerignore, reconstruir y volver a ejecutar: ahora sí aparecen appsettings.json y appsettings.Development.json.

¿Qué aprender y qué evitar?

Incorporar .dockerignore garantiza que, sin importar la imagen base ni las capas, solo empaquetas lo necesario. La práctica refuerza las buenas decisiones y simplifica tu workflow.

¿Qué habilidades y comandos se ponen en juego?

  • Crear y editar .dockerignore en Visual Studio Code.
  • Ajustar el Dockerfile con el nombre del proyecto en puntos clave.
  • Construir imágenes con docker build -t ignorar ..
  • Ejecutar contenedores con docker run -it ignorar.
  • Inspeccionar archivos en el contenedor con Docker Desktop > containers > exec > ls.
  • Detener y eliminar imágenes para repetir el proceso con un entorno limpio.

¿Qué errores evitar y qué beneficios esperar?

  • No excluyas configuraciones críticas por costumbre; en el ejemplo se hizo solo para demostrar la omisión.
  • Si sabes que un archivo o carpeta no es necesaria, omítela: mejora tamaño y claridad.
  • Caso típico: la carpeta de Node modules. No necesitas “llevarte” esos cuatro mil quinientos paquetes de NPM a la imagen; se instalan al ejecutar el contenedor, evitando incrementar el tamaño final.

¿Tienes dudas sobre tu configuración de .NET, tu Dockerfile o tu .dockerignore? Cuéntame tu caso y lo revisamos juntos.

      Cómo usar .dockerignore para imágenes más pequeñas