# ---- Étape build (SDK) ---- FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY *.sln ./ COPY SchotzIadKmTracker.Api/*.csproj SchotzIadKmTracker.Api/ RUN dotnet restore SchotzIadKmTracker.Api/SchotzIadKmTracker.Api.csproj COPY . . RUN dotnet publish SchotzIadKmTracker.Api/SchotzIadKmTracker.Api.csproj -c Release -o /app/publish # ---- Étape runtime (ASP.NET) ---- FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime WORKDIR /app # curl est requis pour le HEALTHCHECK Docker (l'image aspnet ne l'inclut pas par défaut). RUN apt-get update \ && apt-get install -y --no-install-recommends curl \ && rm -rf /var/lib/apt/lists/* COPY --from=build /app/publish . # Répertoire du volume pour la base SQLite persistée RUN mkdir -p /data VOLUME ["/data"] # La base SQLite est stockée sur le volume monté ; le chemin est fourni via la chaîne de connexion ENV ConnectionStrings__Default="Data Source=/data/trajets.db" ENV ASPNETCORE_URLS="http://+:8080" EXPOSE 8080 # Sonde de santé intégrée à l'image (utilisée aussi par Docker Compose). HEALTHCHECK --interval=30s --timeout=5s --retries=3 --start-period=20s \ CMD curl -f http://localhost:8080/health || exit 1 ENTRYPOINT ["dotnet", "SchotzIadKmTracker.Api.dll"]