# ---- Étape build (SDK) ---- # NOTE : le contexte de build est la RACINE du dépôt (voir docker-compose.yml), # afin de pouvoir embarquer les documents de spécification (.kiro/specs). Les chemins # sont donc relatifs à la racine (préfixe backend/). FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY backend/*.sln ./ COPY backend/SchotzIadKmTracker.Api/*.csproj SchotzIadKmTracker.Api/ RUN dotnet restore SchotzIadKmTracker.Api/SchotzIadKmTracker.Api.csproj COPY backend/ . 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 . # Documents de spécification embarqués (lus par SpecsController) : l'application est # ainsi autonome, sans dépendre d'un montage du dépôt à l'exécution. COPY .kiro/specs/schotziad-km-tracker/requirements.md \ .kiro/specs/schotziad-km-tracker/design.md \ .kiro/specs/schotziad-km-tracker/tasks.md \ ./specs/ # 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"]