Esplorare gli elementi di un Dockerfile

Completato

Un Dockerfile è uno script che contiene una serie di istruzioni usate per creare un'immagine Docker. I Dockerfile in genere includono le informazioni seguenti:

  • L'immagine di base o padre usata per creare la nuova immagine
  • I comandi per aggiornare il sistema operativo di base e installare altro software
  • Gli artefatti della compilazione da includere, ad esempio un'applicazione sviluppata
  • I servizi da esporre, ad esempio una configurazione di archiviazione e di rete
  • Il comando da eseguire all'avvio del contenitore

Creare un Dockerfile

Il primo passaggio per la creazione di un Dockerfile consiste nella scelta di un'immagine di base per l'applicazione. Ad esempio, se si intende compilare un'applicazione .NET, è possibile scegliere un'immagine Microsoft .NET come base.

# Use the .NET 6 runtime as a base image
FROM mcr.microsoft.com/dotnet/runtime:6.0

# Set the working directory to /app
WORKDIR /app

# Copy the contents of the published app to the container's /app directory
COPY bin/Release/net6.0/publish/ .

# Expose port 80 to the outside world
EXPOSE 80

# Set the command to run when the container starts
CMD ["dotnet", "MyApp.dll"]

Esaminiamo ogni riga:

  • FROM mcr.microsoft.com/dotnet/runtime:6.0: questo comando imposta l'immagine di base sul runtime di .NET 6, necessario per eseguire le app .NET 6.
  • WORKDIR /app: imposta la directory di lavoro su /app, in cui vengono copiati i file dell'app.
  • COPY bin/Release/net6.0/publish/ .: copia il contenuto dell'app pubblicata nella directory del /app contenitore. Si presuppone che l'app .NET 6 sia già stata compilata e pubblicata nella directory bin/Release/net6.0/publish.
  • EXPOSE 80: espone la porta 80, ovvero la porta HTTP predefinita, all'esterno. Se l'app è in ascolto su una porta diversa, cambiar questa riga di conseguenza.
  • CMD ["dotnet", "MyApp.dll"]: il comando da eseguire all'avvio del contenitore. In questo caso, viene eseguito il comando dotnet con il nome del file DLL dell'app (MyApp.dll). Cambiare questa riga in base al nome e al punto di ingresso delle app.

Non verrà illustrata la specifica del file Dockerfile. Per altre informazioni, vedere le informazioni di riferimento su Dockerfile. Ognuno di questi passaggi crea un'immagine di contenitore nella cache nel corso della compilazione dell'immagine del contenitore finale. Queste immagini temporanee vengono sovrapposte alle precedenti e presentate come singola immagine al termine di tutti i passaggi.

Risorse