Documentation pour Dockerfile et construction d'une image Docker, puis mise en ligne sur Docker Hub. - Macktireh/DotnetWeatherApi GitHub Wiki

Explication des commandes de Dockerfile

  1. Base Image (Image de base):
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base

Cette ligne spécifie l'image de base à utiliser. Ici, vous utilisez l'image ASP.NET Core 8.0, qui contient l'environnement d'exécution ASP.NET Core.

WORKDIR /app

Définit le répertoire de travail dans le conteneur comme /app. Les commandes suivantes seront exécutées dans ce répertoire.

EXPOSE 8080
EXPOSE 8081

Expose les ports 8080 et 8081 sur le conteneur. Cela n'ouvre pas les ports sur la machine hôte, mais cela permet à d'autres conteneurs de se connecter à ces ports.

  1. Build Image (Image de construction):
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build

Cette ligne spécifie une deuxième image à utiliser pour la construction de l'application. Ici, vous utilisez l'image SDK ASP.NET Core 8.0, qui contient l'environnement de développement nécessaire pour construire votre application.

ARG BUILD_CONFIGURATION=Release

Définit un argument de construction BUILD_CONFIGURATION avec la valeur par défaut "Release". Cela permet de spécifier le mode de build lors de la construction de l'image.

WORKDIR /src

Définit le répertoire de travail dans le conteneur pour la construction comme /src.

COPY ["WeatherApi/WeatherApi.csproj", "WeatherApi/"]

Copie le fichier de projet (WeatherApi.csproj) dans le répertoire de travail.

RUN dotnet restore "WeatherApi/WeatherApi.csproj"

Exécute la commande dotnet restore pour restaurer les dépendances du projet.

COPY . .

Copie le reste du code source dans le répertoire de travail.

WORKDIR "/src/WeatherApi"

Change le répertoire de travail pour celui du projet.

RUN dotnet build "WeatherApi.csproj" -c $BUILD_CONFIGURATION -o /app/build

Exécute la commande dotnet build pour construire l'application dans le répertoire /app/build.

  1. Publication (Publish):
FROM build AS publish

Utilise l'image de construction précédente comme base pour la phase de publication.

ARG BUILD_CONFIGURATION=Release

Redéfinit l'argument BUILD_CONFIGURATION pour cette phase.

RUN dotnet publish "WeatherApi.csproj" -c $BUILD_CONFIGURATION -o /app/publish

Exécute la commande dotnet publish pour publier l'application dans le répertoire /app/publish.

  1. Image Finale:
FROM base AS final

Utilise l'image de base comme point de départ pour l'image finale.

WORKDIR /app

Définit le répertoire de travail dans le conteneur comme /app.

COPY --from=publish /app/publish .

Copie le résultat de la phase de publication dans le répertoire de travail.

ENV WEATHER_API_URL=WEATHER_API_URL
ENV WEATHER_API_KEY=WEATHER_API_KEY

Définit des variables d'environnement pour les clés API.

ENTRYPOINT ["dotnet", "WeatherApi.dll"]

Définit la commande d'entrée à exécuter lorsque le conteneur démarre. Dans ce cas, cela lance votre application ASP.NET Core.

Construire l'image Docker et la pousser vers Docker Hub

  1. Créez un compte Docker Hub :

Assurez-vous d'avoir un compte sur Docker Hub. Si vous n'en avez pas, créez-en un.

  1. Connectez-vous à Docker Hub :

Ouvrez un terminal et utilisez la commande docker login pour vous connecter à votre compte Docker Hub.

docker login
  1. Construisez l'image Docker :

Assurez-vous d'être dans le répertoire où se trouve votre Dockerfile et exécutez la commande suivante pour construire l'image Docker. Remplacez par votre nom d'utilisateur Docker Hub.

docker build -t <USERNAME>/weatherapi:1.0 .

Cette commande crée une image avec le tag 1.0

  1. Vérifiez que l'image a été créée avec succès :
docker images

Assurez-vous de voir votre nouvelle image dans la liste.

  1. Poussez l'image vers Docker Hub :

Utilisez la commande docker push pour pousser votre image vers Docker Hub. Remplacez <USERNAME> par votre nom d'utilisateur Docker Hub et <TAG> par le tag que vous avez utilisé lors de la construction.

docker push <USERNAME>/weatherapi:1.0
  1. Vérifiez l'image sur Docker Hub :

Visitez Docker Hub dans votre navigateur et assurez-vous que votre image a été téléchargée avec succès.

⚠️ **GitHub.com Fallback** ⚠️