# ── Build Stage ────────────────────────────────────────────────────────────── FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build WORKDIR /src COPY timetracker/timetracker.csproj timetracker/ RUN dotnet restore timetracker/timetracker.csproj COPY timetracker/ timetracker/ WORKDIR /src/timetracker RUN dotnet publish -c Release -o /app/publish --no-restore # ── Runtime Stage ───────────────────────────────────────────────────────────── FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS final WORKDIR /app COPY --from=build /app/publish . # Verzeichnis für die SQLite-Datenbank (als Volume mounten für Persistenz) RUN mkdir -p /data # HTTP auf Port 8080, HTTPS wird vom Reverse Proxy (z.B. nginx/Traefik) übernommen ENV ASPNETCORE_HTTP_PORTS=8080 ENV ASPNETCORE_ENVIRONMENT=Production ENV TIMETRACKER_DB_PATH=/data/timetracker.db ENV EnableHttpsRedirect=false EXPOSE 8080 # Datenbank-Volume – außerhalb mounten, damit sie Container-Neustarts überlebt VOLUME ["/data"] ENTRYPOINT ["dotnet", "timetracker.dll"]