Características Clave del Formateador de Dockerfile
- Limpia indentación, espaciado y ajuste de líneas para Dockerfiles y Containerfiles
- Normaliza instrucciones RUN multi-línea con barras invertidas e indentación consistentes
- Respeta la semántica de Dockerfile – sin reordenar instrucciones, sin cambios en la lógica del shell
- Salida determinista: misma entrada y versión ⇒ mismo Dockerfile formateado
- Compañero perfecto para hooks pre-commit, monorepos y trabajos de CI usando dprint
- Editor basado en web con resaltado de sintaxis, salida amigable para diff y acciones de copiar/descargar
- Funciona bien con builds multi-etapa, argumentos de build e imágenes típicas de Node/.NET/Go
🛠️ Cómo Formatear un Dockerfile for dockerfile-formatter
1. Pega o Sube Tu Dockerfile
Pega tu Dockerfile en el editor o suelta un Dockerfile/Containerfile de tu proyecto. Los fragmentos pequeños (como un solo bloque FROM/RUN) también funcionan si solo quieres experimentar.
2. Ejecuta el Formateador
Haz clic en "Formatear". La herramienta envía tu código fuente a un backend seguro basado en dprint que ajusta la indentación, espaciado, instrucciones en estilo array y cadenas RUN multilínea sin tocar la lógica de ejecución.
3. Revisa, Copia o Descarga
Compara la salida formateada con tu archivo original. Cuando estés satisfecho, copia el resultado de vuelta a tu repositorio o descarga el Dockerfile formateado para confirmarlo directamente.
Detalles Técnicos
Tipos de Archivo Soportados
El formateador se enfoca en instrucciones de construcción de Docker y archivos de construcción de contenedores compatibles utilizados en Docker, Podman y herramientas similares.
| Tipo | Ejemplo | Notas |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | Archivos de construcción clásicos de Docker para imágenes |
| Containerfile | Containerfile | Archivos de configuración estilo Podman / Buildah |
| Fragmentos en línea | FROM node:18-alpine | También se admiten fragmentos pequeños o ejemplos para pruebas rápidas |
Comportamiento de Formateo (estilo dprint)
Comportamientos de alto nivel del plugin dprint subyacente utilizado por esta herramienta:
| Área | Comportamiento | Ejemplo |
|---|---|---|
| Indentación | Normaliza la indentación para líneas continuadas en RUN y otras instrucciones | RUN set -eux; \\n npm ci; \\n npm cache clean --force |
| Listas y arrays | Limpia el espaciado en arrays estilo JSON para CMD/ENTRYPOINT/HEALTHCHECK | CMD ["npm", "start"] → CMD ["npm", "start"] (pero con espacios consistentes) |
| Espaciado | Elimina espacios redundantes alrededor de las instrucciones preservando el significado | ENV NODE_ENV=production |
| Ajuste de líneas | Puede refluir cadenas RUN largas para mejorar la legibilidad sin cambiar el orden | Las tuberías de shell largas se vuelven más fáciles de escanear y revisar en diferencias |
| Comentarios | Preserva comentarios de línea completa e insertados junto a las instrucciones | # base image for build stage\nFROM node:18 AS build |
Objetivos no incluidos
Este formateador está intencionalmente limitado al diseño, para que puedas combinarlo con otras herramientas de DevOps:
| Elemento | ¿Manejado? | Notas |
|---|---|---|
| Linting estilo Hadolint | ❌ | Usa hadolint o herramientas similares para comprobaciones de mejores prácticas y advertencias |
| Escaneo de seguridad | ❌ | No realiza escaneo de CVE o vulnerabilidades en imágenes o registros |
| Construcción de imágenes | ❌ | No ejecuta docker build ni interactúa con Docker Engine |
| Reordenamiento de instrucciones | ❌ | Nunca reordena instrucciones; solo cambia la indentación y espacios en blanco |
| Fortalecimiento de imagen base | ❌ | No recomienda imágenes base; formatea lo que proporciones |
CLI y Equivalentes en CI
¿Te gusta el resultado? Replica el mismo comportamiento localmente y en CI con dprint y herramientas complementarias.
Universal (dprint)
Inicializa dprint y añade el plugin de Dockerfile
dprint init
# En dprint.json, añade:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# Luego formatea tus Dockerfiles:
dprint fmt DockerfileLa opción más cercana a este formateador en línea, para que desarrolladores y CI usen el mismo estilo.
Linux/macOS
Lint con hadolint (complementa el formateo)
hadolint DockerfileCombina formateo (estilo) con linting (mejores prácticas, imágenes más pequeñas, healthchecks).
Git / pre-commit
Ejecuta dprint en Dockerfiles modificados antes del commit
# .pre-commit-config.yaml (conceptual)
- repo: local
hooks:
- id: dprint-dockerfile
name: dprint Dockerfiles
entry: dprint fmt
language: system
files: "(Dockerfile|Containerfile)$"Garantiza que cada Dockerfile fusionado en main ya esté formateado.
Casos de Uso Comunes
Desarrollo e Ingeniería de Plataforma
- Normalizar Dockerfiles en microservicios antes de la revisión de código
- Limpiar Dockerfiles heredados de múltiples equipos o plantillas
- Estandarizar el estilo al migrar imágenes, versiones de SO base o estrategias de construcción
# Dockerfile multi-etapa típico (limpio, fácil de revisar)
FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci && npm cache clean --force
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=build /app/dist ./
CMD ["node", "index.js"]Pipelines de CI/CD
- Fallar builds cuando los Dockerfiles no están correctamente formateados
- Auto-corregir el estilo en ramas de características mediante hooks pre-commit o trabajos de CI
- Mantener la configuración de Docker legible en monorepositorios y repositorios de plataforma de larga duración
# Ejemplo de hook pre-commit de Git (pseudo-código)
#!/bin/sh
changed=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'Dockerfile|Containerfile' || true)
[ -z "$changed" ] && exit 0
dprint fmt $changed
git add $changedIncorporación de Equipo y Consistencia
- Dar a los nuevos miembros del equipo un único estilo de Dockerfile definido a seguir
- Eliminar debates de estilo de código en PRs: dejar que el formateador sea la fuente de verdad
- Alinear el formateo local, hooks del repositorio y trabajos de CI alrededor de la misma configuración de dprint
# Ejemplo de fragmento para docs/onboarding.md
1. Instalar dprint localmente
2. Copiar el dprint.json compartido del repositorio de plataforma
3. Ejecutar `dprint fmt Dockerfile` antes de abrir una pull request❓ Frequently Asked Questions
¿El formateo cambia cómo se construye mi imagen?
¿Es esto lo mismo que linting con hadolint?
¿Puedo hacer cumplir este estilo en CI?
¿Admite construcciones multi-etapa?
¿Se sube mi Dockerfile a un servidor?
Pro Tips
Ejecuta el formateo automáticamente en CI para que el estilo de Dockerfile nunca varíe entre servicios o equipos.
Combina este formateador con un linter como hadolint para cubrir tanto el diseño como las guías de mejores prácticas.
Acuerda una plantilla estándar de Dockerfile multi-etapa al inicio de un proyecto y mantenla formateada para que los nuevos servicios sigan la misma estructura.
Si trabajas en un monorepositorio, comparte una única configuración de dprint para que el código de aplicación, el código de infraestructura y los Dockerfiles usen convenciones consistentes.
Additional Resources
Other Tools
- Embellecedor CSS
- Embellecedor HTML
- Embellecedor JavaScript
- Embellecedor PHP
- Selector de Color
- Extractor de Sprites
- Decodificador Base64
- Codificador Base64
- Formateador C#
- Formateador CSV
- Formateador Elm
- Formateador ENV
- Formateador Go
- Formateador GraphQL
- Formateador HCL
- Formateador INI
- Formateador JSON
- Formateador LaTeX
- Formateador Markdown
- Formateador Objective-C
- Php Formatter
- Formateador Proto
- Formateador Python
- Formateador Ruby
- Formateador Rust
- Formateador Scala
- Formateador de Scripts de Shell
- Formateador SQL
- Formateador SVG
- Formateador Swift
- Formateador TOML
- Typescript Formatter
- Formateador XML
- Formateador YAML
- Formateador Yarn
- Minificador CSS
- Html Minifier
- Javascript Minifier
- Minificador JSON
- Minificador XML
- Visor de Encabezados HTTP
- PDF a Texto
- Probador de Expresiones Regulares
- Verificador de Posición en SERP
- Consulta Whois