ForHosting KIT · Strumenti per sviluppatori

Analisi delle buone pratiche Dockerfile con righe

Questo analizzatore di buone pratiche per Dockerfile verifica tre problemi comuni prima che un’immagine raggiunga il sistema di build.

● BetaGratis · nel tuo browser
Usalo da WebAPIEmailTelegramApp presto

Segnala l’assenza di WORKDIR, le immagini di base che usano il tag mutabile latest e le istruzioni RUN consecutive che possono creare livelli superflui. Ogni risultato include la riga sorgente, un tipo stabile e una spiegazione diretta, utile sia quando Lei esamina il file sia in un controllo automatizzato di integrazione continua.

Ottenga un rapporto Dockerfile sintetico e pratico

Incolli l’intero contenuto del Dockerfile nel campo di testo ed esegua il controllo. La risposta indica se il file ha superato la verifica, conta i risultati ed elenca ogni problema con un numero di riga a partire da uno, un tipo stabile interpretabile dalle macchine e un messaggio conciso. L’analizzatore si concentra intenzionalmente su tre rischi frequenti di manutenzione e non intende sostituire una suite completa per la sicurezza dei container. Un WORKDIR mancante viene indicato alla riga 1 perché riguarda l’intero file. Un’istruzione FROM è segnalata sulla propria riga quando l’immagine usa latest esplicitamente oppure omette il tag e quindi corrisponde a latest. Quando due RUN sono consecutivi, viene segnalato il secondo con un riferimento alla riga precedente. Commenti e righe vuote non nascondono tale relazione. Un file corretto restituisce un array findings vuoto, così valid può fungere direttamente da condizione di successo. Le continuazioni con barra inversa costituiscono un’unica istruzione logica e mantengono come posizione la prima riga fisica mostrata nell’editor.

Comprenda perché queste tre pratiche contano

WORKDIR rende esplicito il contesto del file system per le successive istruzioni RUN, COPY, CMD ed ENTRYPOINT. Senza questa dichiarazione, il build eredita silenziosamente una directory scelta dall’immagine di base, che potrebbe cambiare con un aggiornamento. Fissare l’immagine di FROM tramite un tag versionato o un digest immutabile migliora la riproducibilità. Sia un riferimento senza tag sia latest possono puntare a contenuti differenti anche se il Dockerfile non è cambiato. Inoltre, ogni RUN crea normalmente un livello del file system. Comandi consecutivi di installazione, pulizia o configurazione spesso appartengono a una singola operazione shell, affinché i file temporanei vengano rimossi nello stesso livello e la cronologia resti comprensibile. Il risultato è formulato come raccomandazione perché RUN separati possono essere intenzionali quando i confini della cache favoriscono un flusso consolidato. Lo strumento non riscrive i comandi e non presume che ogni unione sia sicura. La scelta finale spetta a chi conosce il build, la strategia di cache e il comportamento dei comandi in caso di errore.

Esegua il controllo prima dei build più costosi

Utilizzi l’analizzatore nell’editor, prima di un commit o all’inizio dell’integrazione continua, prima di scaricare immagini di base e compilare l’applicazione. Invii il testo sorgente originale anziché una rappresentazione già analizzata, così da conservare le righe fisiche e le continuazioni. L’algoritmo è deterministico: uno stesso input produce sempre lo stesso output e non utilizza rete, orologio, casualità, daemon Docker o stato dell’ambiente. È quindi adatto anche ai Dockerfile generati. Consideri il rapporto un semplice indicatore di manutenibilità, non una prova di sicurezza o compilabilità. Lo strumento non esegue comandi shell, non risolve variabili nei nomi delle immagini, non ispeziona pacchetti, non convalida le origini COPY, non impone un USER senza privilegi e non cerca vulnerabilità. Abbini questo controllo rapido a un vero build, alla scansione dell’immagine, alle regole aziendali e ai test del processo risultante. Se l’input contiene soltanto spazi o commenti, la richiesta fallisce perché non vi sono istruzioni Dockerfile da valutare.

Esamini un Dockerfile prima del commit

Individui riferimenti mutabili e directory di lavoro ambigue mentre sta ancora modificando le righe interessate.

Controlli le definizioni generate

Verifichi l’output dei template prima che la pipeline impieghi tempo per creare e pubblicare un’immagine.

Valuti un repository di container

Produca risultati coerenti con righe precise per dare priorità a semplici correzioni tra più servizi.

Quanto costa una richiesta di analisi?

Ogni richiesta API costa $0.002. Lei può anche usare direttamente la versione browser disponibile in questa pagina.

Un’immagine senza tag viene considerata latest?

Sì. Docker interpreta un tag omesso come latest; l’analizzatore consiglia quindi un tag versionato o un digest.

Lo strumento combina automaticamente le istruzioni RUN?

No. Segnala i RUN consecutivi senza riscriverli, poiché limiti di cache separati possono essere intenzionali.

Perché WORKDIR mancante viene indicato alla riga 1?

L’omissione riguarda tutto il file e non ha una propria riga; la riga 1 rappresenta quindi la posizione globale.

Questo strumento convalida sintassi o sicurezza?

No. Esegue tre controlli di base e va affiancato a build, regole e scansioni delle vulnerabilità.

Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.

POSThttps://api.kit.forhosting.com/dev2/dockerfile-lint-basic

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

curl -X POST https://api.kit.forhosting.com/dev2/dockerfile-lint-basic \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"FROM node:20-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci && npm cache clean --force\nCOPY . .\nCMD [\"node\", \"server.js\"]"}'
{
  "text": "FROM node:20-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci && npm cache clean --force\nCOPY . .\nCMD [\"node\", \"server.js\"]"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.dockerfile_lint_basic",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Leggi la documentazione completa del KIT →