# Stage 1: Build FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build WORKDIR /src # Copy solution and all project files for restore COPY BimAI.sln ./ COPY BimAI.UI.Web/BimAI.UI.Web.csproj BimAI.UI.Web/ COPY BimAI.UI.Shared/BimAI.UI.Shared.csproj BimAI.UI.Shared/ COPY BimAI.Domain/BimAI.Domain.csproj BimAI.Domain/ COPY BimAI.Application/BimAI.Application.csproj BimAI.Application/ # Restore dependencies RUN dotnet restore BimAI.UI.Web/BimAI.UI.Web.csproj # Copy all source code COPY . . # Build and publish WORKDIR /src/BimAI.UI.Web RUN dotnet publish -c Release -o /app/publish --no-restore # Stage 2: Runtime FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime WORKDIR /app # Install wget for health checks RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/* # Set timezone ENV TZ=Europe/Warsaw RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # Copy published files COPY --from=build /app/publish . # Set environment variables ENV ASPNETCORE_ENVIRONMENT=Production ENV ASPNETCORE_URLS=http://0.0.0.0:7143 # Expose port EXPOSE 7143 # Health check HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:7143/health || exit 1 # Run the application ENTRYPOINT ["dotnet", "BimAI.UI.Web.dll"]