From ddea840f6e0e1a201e81db05c5a7970d3c489019 Mon Sep 17 00:00:00 2001 From: ruberoid Date: Thu, 16 Oct 2025 23:04:28 +0400 Subject: [PATCH] Optimized steps for Dockerfile's --- src/Nocr.Users.Host/Dockerfile | 50 ++++++++++++++---------------- src/Nocr.Users.Migrator/Dockerfile | 48 +++++++++++++--------------- 2 files changed, 46 insertions(+), 52 deletions(-) diff --git a/src/Nocr.Users.Host/Dockerfile b/src/Nocr.Users.Host/Dockerfile index c2394cb..173cd1b 100644 --- a/src/Nocr.Users.Host/Dockerfile +++ b/src/Nocr.Users.Host/Dockerfile @@ -1,12 +1,12 @@ -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app -RUN apt-get update && apt-get install -y ca-certificates && update-ca-certificates -RUN apt-get install -y curl && rm -rf /var/lib/apt/lists/* +EXPOSE 80 +EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src -# Install and update CA certificates FIRST before any network operations +# Install CA certificates for custom NuGet source RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates && \ update-ca-certificates && \ @@ -14,33 +14,31 @@ RUN apt-get update && \ COPY . . -# Create global NuGet.Config with package source mapping +# Create NuGet.Config using cat with heredoc RUN mkdir -p /root/.nuget/NuGet && \ - echo '' > /root/.nuget/NuGet/NuGet.Config && \ - echo '' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo '' >> /root/.nuget/NuGet/NuGet.Config + cat > /root/.nuget/NuGet/NuGet.Config <<'EOF' + + + + + + + + + + + + + + + +EOF -# Restore with verbose logging -RUN dotnet restore "src/Nocr.Users.Host/Nocr.Users.Host.csproj" --verbosity normal +# Publish directly (restore + build + publish in one step) WORKDIR "/src/src/Nocr.Users.Host" -RUN dotnet build "Nocr.Users.Host.csproj" -c Release -o /app/build - -FROM build AS publish RUN dotnet publish "Nocr.Users.Host.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app -COPY --from=publish /app/publish . +COPY --from=build /app/publish . ENTRYPOINT ["dotnet", "Nocr.Users.Host.dll"] diff --git a/src/Nocr.Users.Migrator/Dockerfile b/src/Nocr.Users.Migrator/Dockerfile index 063b270..5652658 100644 --- a/src/Nocr.Users.Migrator/Dockerfile +++ b/src/Nocr.Users.Migrator/Dockerfile @@ -1,12 +1,10 @@ -FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base +FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base WORKDIR /app -RUN apt-get update && apt-get install -y ca-certificates && update-ca-certificates -RUN apt-get install -y curl && rm -rf /var/lib/apt/lists/* FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src -# Install and update CA certificates FIRST before any network operations +# Install CA certificates for custom NuGet source RUN apt-get update && \ apt-get install -y --no-install-recommends ca-certificates && \ update-ca-certificates && \ @@ -14,33 +12,31 @@ RUN apt-get update && \ COPY . . -# Create global NuGet.Config with package source mapping +# Create NuGet.Config using cat with heredoc RUN mkdir -p /root/.nuget/NuGet && \ - echo '' > /root/.nuget/NuGet/NuGet.Config && \ - echo '' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo ' ' >> /root/.nuget/NuGet/NuGet.Config && \ - echo '' >> /root/.nuget/NuGet/NuGet.Config + cat > /root/.nuget/NuGet/NuGet.Config <<'EOF' + + + + + + + + + + + + + + + +EOF -# Restore with verbose logging -RUN dotnet restore "src/Nocr.Users.Migrator/Nocr.Users.Migrator.csproj" --verbosity normal +# Publish directly (restore + build + publish in one step) WORKDIR "/src/src/Nocr.Users.Migrator" -RUN dotnet build "Nocr.Users.Migrator.csproj" -c Release -o /app/build - -FROM build AS publish RUN dotnet publish "Nocr.Users.Migrator.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app -COPY --from=publish /app/publish . +COPY --from=build /app/publish . ENTRYPOINT ["dotnet", "Nocr.Users.Migrator.dll"]