Scrivere un Dockerfile per generare immagini e container da eseguire in produzione può sembrare un'operazione facile, ma è tutt'altro. Di fatto, solo la sintassi è tecnicamente "semplice", poichè ci è sufficiente leggere la documentazione e siamo pronti a partire. Implementare le best-practice di security, tuttavia, è un'altra cosa e richiede un certo livello di esperienza tecnica e di sicurezza, oltre che tool dedicati per valutarne l'efficacia.
In questo script, valuteremo un primo esempio di strumenti che possiamo mettere in campo per determinare automaticamente se c'è qualcosa che può essere migliorato sul codice del Dockerfile. Così come esistono in altre piattaforme/linguaggi, anche per i Dockerfile abbiamo a disposizione un linter, ovvero un sistema che è in grado di analizzare il codice in maniera statica e consente di mostrare degli errori secondo alcune policy/regole che sono state definite. Per Docker, vediamo il caso di Hadolint.
- name: Install linter shell: bash run: | curl -sL -o ${HOME}/hadolint "https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-$(uname -s)-$(uname -m)" chmod 700 ${HOME}/hadolint - name: Validate shell: bash run: ${HOME}/hadolint --ignore DL3018 <path-to-dockerfile>
Integrarlo in un workflow di GitHub è piuttosto semplice e richiede solamente due passaggi: nel primo scarichiamo il tool da GitHub, con il secondo lo mandiamo in esecuzione, passando il Dockerfile ed eventualmente possiamo escludere una serie di policy come quella evidenziata in esempio. Se ci sono raccomandazioni, il tool farà fallire la pipeline e mostrerà nei log l'elenco delle problematiche.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Short-circuiting della Pipeline in ASP.NET Core
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Usare le collection expression per inizializzare una lista di oggetti in C#
Disabilitare automaticamente un workflow di GitHub
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Generare token per autenicarsi sulle API di GitHub
Eseguire le GitHub Actions offline
Determinare lo stato di un pod in Kubernetes
Inizializzare i container in Azure Container Apps
Come migrare da una form non tipizzata a una form tipizzata in Angular
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)