# GermanApp Backend Dockerfile # .NET 9.0 Web API Application # Multi-stage build for production optimization # Build context: GermanApp directory # ============================================ # Build Stage # ============================================ FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src # Copy project file and restore dependencies for Linux-x64 COPY ["GermanApp.csproj", "."] RUN dotnet restore "GermanApp.csproj" --runtime linux-x64 # Copy everything else and build COPY . . WORKDIR "/src" RUN dotnet build "GermanApp.csproj" -c Release -o /app/build --runtime linux-x64 # Publish the application RUN dotnet publish "GermanApp.csproj" -c Release -o /app/publish \ --no-restore \ --runtime linux-x64 \ -p:PublishSingleFile=false \ -p:PublishTrimmed=false # ============================================ # Publish Stage # ============================================ FROM build AS publish # ============================================ # Runtime Stage # ============================================ FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime WORKDIR /app # Copy published app from publish stage COPY --from=publish /app/publish . # Set environment variables ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false ENV ASPNETCORE_URLS=http://+:8080 ENV ASPNETCORE_ENVIRONMENT=Production # Expose port EXPOSE 8080 # Health check HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD curl -f http://localhost:8080/health || exit 1 # Entry point ENTRYPOINT ["dotnet", "GermanApp.dll"]