Documentation pour Dockerfile et construction d'une image Docker, puis mise en ligne sur Docker Hub. - Macktireh/DotnetWeatherApi GitHub Wiki
- 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.
- 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.
- 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.
- 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.
- 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.
- Connectez-vous à Docker Hub :
Ouvrez un terminal et utilisez la commande docker login
pour vous connecter à votre compte Docker Hub.
docker login
- 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
- Vérifiez que l'image a été créée avec succès :
docker images
Assurez-vous de voir votre nouvelle image dans la liste.
- 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
- 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.