Explorer les éléments d’un Dockerfile
Un Dockerfile est un script qui contient une série d’instructions utilisées pour générer une image Docker. Les Dockerfiles comprennent généralement les informations suivantes :
- L’image de base ou parente que nous utilisons pour créer l’image
- Des commandes pour mettre à jour le système d’exploitation de base et installer d’autres logiciels
- Les artefacts de build à inclure, par exemple une application développée
- Les services à exposer, comme une configuration de stockage et une configuration réseau
- La commande à exécuter quand le conteneur est lancé
Créer un Dockerfile
La première étape de création d’un Dockerfile est de choisir une image de base qui sert de base à votre application. Par exemple, si vous créez une application .NET, vous pouvez choisir une image Microsoft .NET comme 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"]
Passons en revue chaque ligne pour voir ce qu’elle fait :
FROM mcr.microsoft.com/dotnet/runtime:6.0
: cette commande définit l’image de base sur le runtime .NET 6, qui est nécessaire pour exécuter des applications .NET 6.WORKDIR /app
: définit le répertoire de travail sur/app
, où sont copiés les fichiers d’application.COPY bin/Release/net6.0/publish/ .
: copie le contenu de l’application publiée dans le répertoire/app
du conteneur. Nous partons du principe que l’application .NET 6 est générée et publiée dans le répertoirebin/Release/net6.0/publish
.EXPOSE 80
: expose le port 80, port HTTP par défaut, au monde extérieur. Changez cette ligne en conséquence si votre application écoute sur un autre port.CMD ["dotnet", "MyApp.dll"]
: commande à exécuter quand le conteneur démarre. Dans ce cas, nous exécutons la commande dotnet avec le nom du fichier DLL de notre application (MyApp.dll
). Changez cette ligne pour qu’elle corresponde au nom et au point d’entrée de vos applications.
Nous n’allons pas couvrir la spécification du fichier Dockerfile. Pour en savoir plus, consultez Documentation de référence de Dockerfile. Chacune de ces étapes crée une image conteneur mise en cache au moment où nous générons l’image conteneur finale. Ces images temporaires sont superposées sur les précédentes et présentées sous la forme d’une image unique une fois toutes les étapes terminées.
Ressources
- Informations de référence de Docker run (CLI)
- Informations de référence de Docker build