You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.6 KiB

# Étape de base pour exécuter l'application avec .NET 9
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
WORKDIR /app
EXPOSE 8080
# Créer un utilisateur non-root pour l'étape finale
RUN useradd -m appuser
# Étape de construction avec .NET 9 SDK
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
# Copier uniquement les fichiers nécessaires au restore
COPY portfolio_siwa/portfolio_siwa.csproj ./portfolio_siwa/
# Désactiver le cache Docker si la structure change
RUN dotnet restore portfolio_siwa/portfolio_siwa.csproj
# Copier uniquement les fichiers utiles à la compilation (et ignorer les fichiers sensibles)
COPY portfolio_siwa/ ./portfolio_siwa/
COPY tests/ ./tests/
COPY portfolio_siwa.sln ./
WORKDIR /src/portfolio_siwa
# Nettoyer les dossiers avant build pour éviter les problèmes de compression
RUN dotnet clean && rm -rf bin obj
# Construire l'application
RUN dotnet build "portfolio_siwa.csproj" -c $BUILD_CONFIGURATION -o /app/build
# Étape de publication
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
# Nettoyage avant publication
WORKDIR /src/portfolio_siwa
RUN dotnet clean && rm -rf bin obj
# Empêcher la compression des assets Blazor (si bug compression)
RUN dotnet publish "portfolio_siwa.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# Étape finale : image d'exécution sécurisée
FROM base AS final
WORKDIR /app
# Copier le résultat publié
COPY --from=publish /app/publish .
# Changer les droits et utiliser l'utilisateur non-root
RUN chown -R appuser:appuser /app
USER appuser
# Entrée de l'application
ENTRYPOINT ["dotnet", "portfolio_siwa.dll"]