
Dockerfile: lint y formateo en línea (Hadolint)
Detecta anti-patrones Docker (usuario root, capas de cache, tags `latest`) y formatea tus Dockerfiles antes de la CI.
¿Por qué lintear y formatear un Dockerfile antes de la CI?
Un Dockerfile construye tus imágenes capa a capa. Una instrucción `USER root` olvidada, un tag `latest` o `RUN` en cascada inflan la imagen, ralentizan la caché BuildKit y hacen fallar Hadolint en el pipeline — a menudo demasiado tarde. Formatear y lintear antes de abrir la PR reduce el ruido de CI y alinea al equipo en las mismas convenciones. En FastMinify puedes lintear un Dockerfile en línea (reglas DL estilo Hadolint) y formatear un Dockerfile en línea — 100 % en el navegador. El cluster completo está en el hub de herramientas DevOps, junto a Terraform, Compose y `.env`.
Reglas DL frecuentes y flujo antes de la PR
Algunos códigos vuelven en casi todos los equipos. Corregirlos pronto evita un muro de warnings Hadolint en CI.
Fija Hadolint (versión de imagen o binario) y haz fallar el pipeline en los niveles del equipo. El navegador sigue siendo un filtro rápido fuera del monorepo.
Lint vs format vs build
Format, lint y `docker build` se complementan. En revisión, formatea, lintea y deja que la CI construya.
Objetivo
Cuándo usarlo
Una secuencia simple evita corregir el estilo después del lint en bucle.
Cuándo basta la herramienta del navegador
No hace falta clonar el monorepo para corregir tres instrucciones recibidas en Slack.
Límites: lo que el navegador no sustituye
En cuanto debas aplicar la config del equipo (ignores, severity), escanear el shell en RUN o construir multi-stage con secretos BuildKit, el CLI y la CI siguen siendo obligatorios.
Un servicio suele llegar con Compose, `.env` y HCL. Format/lint Dockerfile + validate Compose/env + format Terraform cubren el recorrido DevOps diario.
CLI y ecosistema
Hadolint y dockerfile-utils siguen siendo el estándar en empresa. Las herramientas FastMinify son un complemento para la exploración y los one-shots.
Hadolint
Linter Dockerfile de referencia con reglas DL e integración CI.
Ventajas:
Inconvenientes:
dockerfile-utils / formatters
Normalización de estilo (mayúsculas, espaciado) en el editor o CLI.
Ventajas:
Inconvenientes:
BuildKit / buildx
Motor de build moderno: caché, multi-platform, secretos.
Ventajas:
Inconvenientes:
Anatomía de un Dockerfile: instrucciones y capas
Un Dockerfile es una secuencia de instrucciones (`FROM`, `RUN`, `COPY`, `WORKDIR`, `USER`, `CMD`…). Cada instrucción que muta el sistema de archivos crea una capa. El orden cuenta para la caché: los cambios frecuentes (código de la app) deben llegar después de las capas estables (dependencias OS). Para el YAML vecino (`compose.yml`), valida la estructura antes de `docker compose up`.
El linter FastMinify aplica un subconjunto documentado de reglas DL Hadolint (identificadores wiki). No lanza ShellCheck en cada `RUN`, no construye la imagen y no comprueba el registro remoto. En CI, Hadolint CLI (o la action de GitHub) sigue siendo la referencia del equipo.
Lint y format: dos intenciones distintas
El linter reporta issues con código DL (p. ej. DL3007 para `latest`, DL3002 para usuario root final) y enlaces al wiki Hadolint. Ideal para pegar un Dockerfile y corregir antes de la PR. Prueba el linter Dockerfile en línea.
El formateador normaliza las mayúsculas de las instrucciones y el espaciado para diffs estables — sin cambiar la semántica del build. Usa el formateador Dockerfile en línea antes de commitear un archivo retocado a mano.
El Dockerfile rara vez vive solo. Valida también Docker Compose en línea y los archivos `.env` antes de un deploy local.
Conclusión
Lintear y formatear un Dockerfile antes de la CI evita idas y vueltas innecesarias sobre las reglas DL y el estilo. Usa el navegador para snippets y el primer filtro estilo Hadolint, y después Hadolint CLI y `docker build` para la verdad del pipeline. Encadena con Compose, `.env` y Terraform en el mismo hub DevOps.
Artículos relacionados

YAML roto, `on` o `jobs` ausentes, steps vacíos: valida la estructura de tus workflows antes del push — y deja actionlint para la CI.

Errores de sintaxis SDL, review de esquema y formateo antes del merge — complemento al beautify GraphQL existente.

Reduce la factura OpenAI/Anthropic/Gemini: estima input/output, activa batch y caching en tus cálculos — tarifas verificadas, 100 % local.