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
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"] |