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.