# Linter de Dockerfile (conjunto de reglas Hadolint)

Pega un Dockerfile y ejecuta análisis estático estilo Hadolint sin daemon de Docker: etiquetas de imagen base, USER root, sudo, higiene de apt/apk/yum/dnf, fijado de versiones de npm/pip/yarn, ADD vs COPY, fusión de capas, pipefail, puertos EXPOSE, secretos en ENV y más de 30 reglas clasificadas por severidad con línea, motivo y ejemplo de corrección, más una vista del código anotada línea a línea.

> Página canónica: https://elysiatools.com/es/tools/dockerfile-linter

- **Categoría:** Development

- **Palabras clave:** dockerfile, hadolint, linter, buenas prácticas docker, imagen de contenedor

## Descripción general

Los IDs y severidades siguen las fuentes de Hadolint v2.15 (DL4000 MAINTAINER=error, DL3025 CMD en shell=warning, DL3057 HEALTHCHECK ausente ignorado por defecto y opcional). El análisis respeta la semántica de Dockerfile: directiva # escape=, continuaciones de línea, heredocs de BuildKit (RUN <<EOF), forma de matriz JSON, reinicio de estado en cada FROM de builds multi-stage y supresión con # hadolint ignore=DLxxxx. Las reglas de gestores de paquetes operan por tokens de comando (apt-get update sin rm -rf /var/lib/apt/lists en la misma RUN → DL3009, etc.); npm install sin @version → DL3016; pip install sin == y sin --no-cache-dir → DL3013/DL3042. BP001 es una extensión de la plataforma: recordar .dockerignore al hacer COPY . .

## Entradas

- **Contenido del Dockerfile** (textarea): FROM node:20-alpine WORKDIR /app COPY . . RUN npm ci --omit=dev CMD \["node", "server.js"\]
- **Severidad mínima mostrada** (select)
- **Incluir regla HEALTHCHECK (DL3057)** (checkbox)

## Cuándo usarlo

- Cuando revisas un Dockerfile nuevo o heredado antes de construir la imagen.
- Cuando quieres filtrar hallazgos por umbral de severidad (info, avisos o solo errores).
- Cuando compruebas builds multi-etapa, HEALTHCHECK opcional y COPY del contexto completo.

## Cómo funciona

- Pega el Dockerfile completo en el campo de contenido (admite continuaciones, heredocs BuildKit, forma JSON y comentarios # hadolint ignore).
- Elige la severidad mínima mostrada y si incluir la regla DL3057 de HEALTHCHECK.
- El linter aplica las reglas Hadolint v2.15 respetando multi-stage (reinicio por cada FROM) y gestores de paquetes por tokens de comando.
- Recibes un informe HTML con hallazgos por error, aviso e info, número de línea, motivo, corrección sugerida y el código anotado.

## Casos de uso

- Revisar Dockerfiles de Node, Python o Ubuntu antes de subirlos al repositorio o al CI.
- Detectar :latest, USER root, sudo, secretos en ENV y puertos EXPOSE inválidos.
- Mejorar higiene de apt/npm/pip, fusión de capas RUN y uso de COPY frente a ADD.

## Preguntas frecuentes

### ¿Hace falta tener Docker o un daemon en marcha?

No. Es análisis estático: solo pegas el texto del Dockerfile.

### ¿Qué reglas se aplican?

Más de 30 alineadas con Hadolint v2.15 (p. ej. DL4000, DL3007, DL3009, DL3016, DL3025) más BP001 al hacer COPY . .

### ¿Puedo silenciar una regla concreta?

Sí, con un comentario # hadolint ignore=DLxxxx en la línea correspondiente.

### ¿Qué hace la casilla HEALTHCHECK?

Activa o no la regla DL3057 cuando falta la instrucción HEALTHCHECK.

### ¿Soporta builds multi-etapa?

Sí. El estado se reinicia en cada FROM y se analizan las etapas por separado.

## Herramientas relacionadas

- [Comprobador de accesibilidad de vision del color](https://elysiatools.com/es/tools/color-vision-accessibility-checker): Mide contraste WCAG, simula deficiencias visuales y marca zonas de bajo contraste en capturas UI.
- [Linter de HTML para Email](https://elysiatools.com/es/tools/email-html-linter): Verifica la compatibilidad entre clientes de plantillas HTML de email: flex/grid no soportado, CSS no inline, trampas de renderizado Word de Outlook, problemas de layout con tablas y falta de accesibilidad. Cubre las limitaciones conocidas de Gmail/Outlook/Apple Mail.
- [Verificador de accesibilidad](https://elysiatools.com/es/tools/accessibility-checker): Detecta problemas comunes de WCAG 2.1 en HTML, paginas o imagenes de diseno y devuelve sugerencias accionables
- [Auditor de dependencias de package.json](https://elysiatools.com/es/tools/package-json-dependency-auditor): Audita un package.json en busca de higiene de dependencias y calidad de rangos de versión, y opcionalmente inspecciona el árbol transitivo desde package-lock.json o yarn.lock. Señala duplicados, comodines o pre-release, claves sin ordenar, metadatos ausentes y dependencias runtime/dev mal clasificadas.
- [Sincronizador de paleta Tailwind](https://elysiatools.com/es/tools/tailwind-color-palette-sync): Introduce HEX, elige esquema de nombres (escala 50–950 / nombre único / anidamiento) y genera el fragmento theme.extend.colors de tailwind.config.ts con niveles WCAG AA/AAA por color. Modo oscuro opcional.
- [Generador de informes de auditoria de accesibilidad](https://elysiatools.com/es/tools/accessibility-audit-report-generator): Audita HTML o una URL para detectar problemas comunes de WCAG y exporta un PDF estructurado
- [Extractor de paleta de color desde imagen](https://elysiatools.com/es/tools/image-color-palette-extractor): Sube una imagen, extrae colores dominantes y exporta tokens listos para codigo con verificacion de contraste
- [Analizador de imagen VP8](https://elysiatools.com/es/tools/vp8-image-analyzer): Analiza imagenes WebP/VP8 con Sharp, genera un mapa gris de desplazamiento y renderiza un relieve 3D con Three.js

## Ejemplos

- [Ejemplos de Procesamiento de Imágenes Android Java](https://elysiatools.com/es/samples/android-image-processing-java): Ejemplos de procesamiento de imágenes Android Java incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Android Kotlin](https://elysiatools.com/es/samples/android-image-processing-kotlin): Ejemplos de procesamiento de imágenes Android Kotlin incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Web Python](https://elysiatools.com/es/samples/web-image-processing-python): Ejemplos de procesamiento de imágenes Web Python usando PIL/Pillow incluyendo lectura, guardado, redimensionamiento y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Web Rust](https://elysiatools.com/es/samples/web-image-processing-rust): Ejemplos de procesamiento de imágenes Web Rust incluyendo lectura/escritura, escalado y conversión de formato

## Contenido relacionado

- [Herramientas de conversion de formatos de imagen y exportacion animada](https://elysiatools.com/es/hubs/image-convert): Compara convertidores de imagen para JPG, PNG, GIF, AVIF, WebP, TIFF, ICO, base64 y salidas pensadas para animacion en un solo hub.
- [Herramientas de limpieza, acabado y preparacion por lotes de imagenes](https://elysiatools.com/es/hubs/image-utility): Reune en un solo hub herramientas para limpiar imagenes, recortar bordes, agregar margen o marco, redimensionar y comprimir por lotes, poner marcas de agua y pulir activos visuales.
- [Herramientas de metadatos de imagen, EXIF y limpieza de privacidad](https://elysiatools.com/es/hubs/image-metadata): Compara visores de metadatos, inspectores EXIF/IPTC/XMP, corrección de orientación, editores de metadatos y limpieza de privacidad para publicación de imágenes.
- [Herramientas de Limpieza, Redimensionado y Mejora de Imagen](https://elysiatools.com/es/hubs/image-cleanup-resize-and-detail-enhancement): Prepara imágenes con corrección de orientación, recorte, reducción de ruido, redimensionado, nitidez y conversión por lotes.
