Caratteristiche Principali del Formattatore Dockerfile
- Pulisce indentazione, spaziatura e a capo per Dockerfile e Containerfile
- Normalizza le istruzioni RUN multi-linea con backslash e indentazione coerenti
- Rispetta la semantica Dockerfile – nessun riordino istruzioni, nessuna modifica alla logica shell
- Output deterministico: stesso input e versione ⇒ stesso Dockerfile formattato
- Compagno perfetto per hook pre-commit, monorepo e job CI che utilizzano dprint
- Editor basato su web con evidenziazione sintassi, output diff-friendly e azioni copia/download
- Funziona bene con build multi-stage, argomenti di build e immagini tipiche Node/.NET/Go
🛠️ Come Formattare un Dockerfile for dockerfile-formatter
1. Incolla o Carica il Tuo Dockerfile
Incolla il tuo Dockerfile nell'editor o rilascia un Dockerfile/Containerfile dal tuo progetto. Anche piccoli frammenti (come un singolo blocco FROM/RUN) funzionano se vuoi solo sperimentare.
2. Esegui il Formattatore
Clicca "Formatta". Lo strumento invia il tuo codice sorgente a un backend sicuro basato su dprint che regola l'indentazione, la spaziatura, le istruzioni in stile array e le catene RUN multi-linea senza toccare la logica di esecuzione.
3. Rivedi, Copia o Scarica
Confronta l'output formattato con il tuo file originale. Quando sei soddisfatto, copia il risultato nel tuo repository o scarica il Dockerfile formattato per commitarlo direttamente.
Dettagli Tecnici
Tipi di File Supportati
Il formattatore si rivolge alle istruzioni di build di Docker e ai file di build di container compatibili utilizzati in Docker, Podman e strumenti simili.
| Tipo | Esempio | Note |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | File di build Docker classici per immagini |
| Containerfile | Containerfile | File di configurazione in stile Podman / Buildah |
| Frammenti in linea | FROM node:18-alpine | Sono supportati anche piccoli frammenti o esempi per test rapidi |
Comportamento di Formattazione (stile dprint)
Comportamenti di alto livello del plugin dprint sottostante utilizzato da questo strumento:
| Area | Comportamento | Esempio |
|---|---|---|
| Indentazione | Normalizza l'indentazione per le righe continuate in RUN e altre istruzioni | RUN set -eux; \\n npm ci; \\n npm cache clean --force |
| Liste e array | Pulisce la spaziatura negli array in stile JSON per CMD/ENTRYPOINT/HEALTHCHECK | CMD ["npm", "start"] → CMD ["npm", "start"] (ma con spazi coerenti) |
| Spaziatura | Rimuove gli spazi ridondanti attorno alle istruzioni preservandone il significato | ENV NODE_ENV=production |
| A capo riga | Può riorganizzare le lunghe catene RUN per la leggibilità senza cambiare l'ordine | Le lunghe pipeline di shell diventano più facili da scansionare e rivedere nei diff |
| Commenti | Preserva i commenti a riga intera e in linea accanto alle istruzioni | # base image for build stage\nFROM node:18 AS build |
Obiettivi non inclusi
Questo formattatore è intenzionalmente limitato al layout, quindi puoi combinarlo con altri strumenti DevOps:
| Elemento | Gestito? | Note |
|---|---|---|
| Linting in stile Hadolint | ❌ | Usa hadolint o strumenti simili per controlli e avvisi sulle migliori pratiche |
| Scansione della sicurezza | ❌ | Nessuna scansione CVE o vulnerabilità di immagini o registri |
| Creazione di immagini | ❌ | Non esegue docker build né interagisce con Docker Engine |
| Riordinamento delle istruzioni | ❌ | Non riordina mai le istruzioni; cambia solo indentazione e spazi bianchi |
| Rafforzamento dell'immagine base | ❌ | Non raccomanda immagini base; formatta qualsiasi cosa tu fornisca |
CLI & Equivalenti CI
Ti piace il risultato? Replica lo stesso comportamento localmente e in CI con dprint e strumenti complementari.
Universale (dprint)
Inizializza dprint e aggiungi il plugin Dockerfile
dprint init
# In dprint.json, aggiungi:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# Poi formatta i tuoi Dockerfile:
dprint fmt DockerfileLa corrispondenza più vicina a questo formattatore online, così sviluppatori e CI usano lo stesso stile.
Linux/macOS
Linting con hadolint (complementa la formattazione)
hadolint DockerfileCombina la formattazione (stile) con il linting (migliori pratiche, immagini più piccole, healthcheck).
Git / pre-commit
Esegui dprint sui Dockerfile modificati prima del commit
# .pre-commit-config.yaml (concettuale)
- repo: local
hooks:
- id: dprint-dockerfile
name: dprint Dockerfiles
entry: dprint fmt
language: system
files: "(Dockerfile|Containerfile)$"Garantisce che ogni Dockerfile unito al main sia già formattato.
Casi d'Uso Comuni
Sviluppo e Ingegneria della Piattaforma
- Normalizza i Dockerfile tra i microservizi prima della revisione del codice
- Pulisci i Dockerfile legacy ereditati da più team o template
- Standardizza lo stile durante la migrazione di immagini, versioni del sistema operativo base o strategie di build
# Dockerfile multi-stage tipico (pulito, facile da revisionare)
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"]Pipeline CI/CD
- Fai fallire le build quando i Dockerfile non sono formattati correttamente
- Correggi automaticamente lo stile sui branch delle feature tramite hook pre-commit o job CI
- Mantieni la configurazione Docker leggibile in monorepo e repository di piattaforma di lunga durata
# Esempio di hook Git pre-commit (pseudo-codice)
#!/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 $changedOnboarding del Team e Coerenza
- Fornisci ai nuovi membri del team un unico stile Dockerfile da seguire
- Rimuovi i dibattiti sullo stile del codice dalle PR: lascia che il formatter sia la fonte di verità
- Allinea la formattazione locale, gli hook del repository e i job CI attorno alla stessa configurazione dprint
# Esempio di snippet per docs/onboarding.md
1. Installa dprint localmente
2. Copia il dprint.json condiviso dal repository della piattaforma
3. Esegui `dprint fmt Dockerfile` prima di aprire una pull request❓ Frequently Asked Questions
La formattazione cambia come viene costruita la mia immagine?
È lo stesso del linting con hadolint?
Posso imporre questo stile in CI?
Supporta le build multi-stage?
Il mio Dockerfile viene caricato su un server?
Pro Tips
Esegui la formattazione automaticamente in CI affinché lo stile dei Dockerfile non diverga mai tra servizi o team.
Abbina questo formattatore a un linter come hadolint per coprire sia il layout che le linee guida sulle migliori pratiche.
Concorda su un modello standard di Dockerfile multi-stage all'inizio di un progetto e mantienilo formattato in modo che i nuovi servizi seguano la stessa struttura.
Se lavori in un monorepo, condividi una singola configurazione dprint in modo che il codice dell'applicazione, il codice dell'infrastruttura e i Dockerfile utilizzino convenzioni coerenti.
Additional Resources
Other Tools
- Abbellitore CSS
- Abbellitore HTML
- Abbellitore Javascript
- Abbellitore PHP
- Selettore Colori
- Estrattore Sprite
- Decodificatore Base64
- Codificatore Base64
- Formattatore Csharp
- Formattatore CSV
- Formattatore Elm
- Formattatore ENV
- Formattatore Go
- Formattatore GraphQL
- Formattatore HCL
- Formattatore INI
- Formattatore JSON
- Formattatore LaTeX
- Formattatore Markdown
- Formattatore Objective-C
- Php Formatter
- Formattatore Proto
- Formattatore Python
- Formattatore Ruby
- Formattatore Rust
- Formattatore Scala
- Formattatore Script Shell
- Formattatore SQL
- Formattatore SVG
- Formattatore Swift
- Formattatore TOML
- Typescript Formatter
- Formattatore XML
- Formattatore YAML
- Formattatore Yarn
- Minificatore CSS
- Html Minifier
- Javascript Minifier
- Minificatore JSON
- Minificatore XML
- Visualizzatore Intestazioni HTTP
- PDF a Testo
- Tester Regex
- Controllore Posizione SERP
- Ricerca Whois