#346 · Herramienta para desarrolladores

Dockerfile Linter

Revisa un Dockerfile con reglas estáticas enfocadas en errores frecuentes y prácticas que afectan reproducibilidad, seguridad y tamaño de imagen. Señala líneas concretas para instrucciones desconocidas, uso de latest, sudo, ADD cuando COPY basta, secretos en ENV/ARG y otros patrones que conviene revisar antes de construir.

Datos de entrada

Dockerfile
Espacio publicitario

Cómo usar esta herramienta para desarrolladores

  1. Pega el Dockerfile completo.
  2. Ejecuta el análisis.
  3. Corrige primero los errores y después las advertencias.
  4. Vuelve a ejecutar el linter y comprueba que los cambios mantienen la intención del build.

Qué hace esta herramienta para desarrolladores

Tokeniza instrucciones principales del Dockerfile y ejecuta reglas explícitas. Cada hallazgo incluye severidad, número de línea, regla y recomendación para que puedas corregirlo sin depender de un daemon Docker.

Se reconocen instrucciones Dockerfile habituales. Las reglas comprueban, entre otros casos, FROM sin tag o con latest, sudo en RUN, ADD local sustituible por COPY y nombres de variables sensibles en ARG/ENV.

El linter es estático y no ejecuta docker build. Una advertencia puede ser intencional en tu contexto, así que revisa cada hallazgo antes de modificar el archivo.

Ejemplo

Entrada

FROM node:latest
WORKDIR /app
ADD . /app
ARG API_KEY=secret
RUN sudo npm install
CMD ["node", "server.js"]

Resultado esperado

La herramienta procesa el ejemplo con la lógica descrita arriba y muestra un resumen estructurado listo para copiar o descargar.

Casos de uso

  • Revisión rápida antes de un pull request.
  • Detectar secretos incorporados por error.
  • Mejorar reproducibilidad de imágenes.

Consejos para obtener resultados fiables

  • Fija versiones de imágenes base cuando necesites builds reproducibles.
  • Usa COPY en lugar de ADD si no necesitas sus funciones adicionales.
  • No guardes secretos en ARG o ENV.
  • Evita sudo dentro de RUN salvo una razón muy específica.
  • Combina limpieza de cachés en la misma capa RUN cuando corresponda.

Detalles del procesamiento

Las continuaciones de línea se contabilizan dentro del análisis básico, pero las reglas se aplican por línea física para poder ofrecer ubicaciones claras. Se cuentan etapas por instrucciones FROM.

No expande variables, no descarga imágenes y no resuelve el contexto real de build. Tampoco sustituye a hadolint, BuildKit ni a un escáner de vulnerabilidades.

Preguntas frecuentes

¿Qué errores puede detectar un linter de Dockerfile sin ejecutar Docker?

Puede revisar sintaxis de instrucciones y patrones estáticos como latest, sudo, secretos en ARG/ENV o uso de ADD donde COPY sería suficiente.

¿Usar FROM imagen:latest siempre es incorrecto?

No siempre, pero reduce reproducibilidad porque la etiqueta puede apuntar a contenidos distintos con el tiempo. El linter lo marca para revisión.

¿Por qué se recomienda COPY en lugar de ADD?

COPY tiene un comportamiento más explícito para archivos locales. ADD incorpora funciones adicionales que pueden ser innecesarias y menos evidentes.

¿ARG y ENV son lugares seguros para secretos?

No deben usarse para secretos persistentes. Emplea mecanismos de secretos del builder o de la plataforma de despliegue.

¿Este linter sustituye a docker build o hadolint?

No. Es una revisión local rápida; docker build valida el build real y herramientas especializadas cubren reglas más amplias.

Resumen de módulos

MóduloQué muestra
ReglasPatrones de sintaxis y prácticas Dockerfile
UbicaciónNúmero de línea por hallazgo
SeveridadError, advertencia o información