Optimized steps for Dockerfile's
This commit is contained in:
parent
b8f0cc363b
commit
ddea840f6e
@ -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
|
WORKDIR /app
|
||||||
RUN apt-get update && apt-get install -y ca-certificates && update-ca-certificates
|
EXPOSE 80
|
||||||
RUN apt-get install -y curl && rm -rf /var/lib/apt/lists/*
|
EXPOSE 443
|
||||||
|
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
|
|
||||||
# Install and update CA certificates FIRST before any network operations
|
# Install CA certificates for custom NuGet source
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends ca-certificates && \
|
apt-get install -y --no-install-recommends ca-certificates && \
|
||||||
update-ca-certificates && \
|
update-ca-certificates && \
|
||||||
@ -14,33 +14,31 @@ RUN apt-get update && \
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Create global NuGet.Config with package source mapping
|
# Create NuGet.Config using cat with heredoc
|
||||||
RUN mkdir -p /root/.nuget/NuGet && \
|
RUN mkdir -p /root/.nuget/NuGet && \
|
||||||
echo '<?xml version="1.0" encoding="utf-8"?>' > /root/.nuget/NuGet/NuGet.Config && \
|
cat > /root/.nuget/NuGet/NuGet.Config <<'EOF'
|
||||||
echo '<configuration>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
echo ' <packageSources>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<configuration>
|
||||||
echo ' <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />' >> /root/.nuget/NuGet/NuGet.Config && \
|
<packageSources>
|
||||||
echo ' <add key="musk.fun.nocr" value="https://gitea.musk.fun/api/packages/nocr/nuget/index.json" />' >> /root/.nuget/NuGet/NuGet.Config && \
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
||||||
echo ' </packageSources>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<add key="musk.fun.nocr" value="https://gitea.musk.fun/api/packages/nocr/nuget/index.json" />
|
||||||
echo ' <packageSourceMapping>' >> /root/.nuget/NuGet/NuGet.Config && \
|
</packageSources>
|
||||||
echo ' <packageSource key="musk.fun.nocr">' >> /root/.nuget/NuGet/NuGet.Config && \
|
<packageSourceMapping>
|
||||||
echo ' <package pattern="Nocr.*" />' >> /root/.nuget/NuGet/NuGet.Config && \
|
<packageSource key="musk.fun.nocr">
|
||||||
echo ' </packageSource>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<package pattern="Nocr.*" />
|
||||||
echo ' <packageSource key="nuget.org">' >> /root/.nuget/NuGet/NuGet.Config && \
|
</packageSource>
|
||||||
echo ' <package pattern="*" />' >> /root/.nuget/NuGet/NuGet.Config && \
|
<packageSource key="nuget.org">
|
||||||
echo ' </packageSource>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<package pattern="*" />
|
||||||
echo ' </packageSourceMapping>' >> /root/.nuget/NuGet/NuGet.Config && \
|
</packageSource>
|
||||||
echo '</configuration>' >> /root/.nuget/NuGet/NuGet.Config
|
</packageSourceMapping>
|
||||||
|
</configuration>
|
||||||
|
EOF
|
||||||
|
|
||||||
# Restore with verbose logging
|
# Publish directly (restore + build + publish in one step)
|
||||||
RUN dotnet restore "src/Nocr.Users.Host/Nocr.Users.Host.csproj" --verbosity normal
|
|
||||||
WORKDIR "/src/src/Nocr.Users.Host"
|
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
|
RUN dotnet publish "Nocr.Users.Host.csproj" -c Release -o /app/publish
|
||||||
|
|
||||||
FROM base AS final
|
FROM base AS final
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=publish /app/publish .
|
COPY --from=build /app/publish .
|
||||||
ENTRYPOINT ["dotnet", "Nocr.Users.Host.dll"]
|
ENTRYPOINT ["dotnet", "Nocr.Users.Host.dll"]
|
||||||
|
|||||||
@ -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
|
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
|
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
|
|
||||||
# Install and update CA certificates FIRST before any network operations
|
# Install CA certificates for custom NuGet source
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends ca-certificates && \
|
apt-get install -y --no-install-recommends ca-certificates && \
|
||||||
update-ca-certificates && \
|
update-ca-certificates && \
|
||||||
@ -14,33 +12,31 @@ RUN apt-get update && \
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Create global NuGet.Config with package source mapping
|
# Create NuGet.Config using cat with heredoc
|
||||||
RUN mkdir -p /root/.nuget/NuGet && \
|
RUN mkdir -p /root/.nuget/NuGet && \
|
||||||
echo '<?xml version="1.0" encoding="utf-8"?>' > /root/.nuget/NuGet/NuGet.Config && \
|
cat > /root/.nuget/NuGet/NuGet.Config <<'EOF'
|
||||||
echo '<configuration>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
echo ' <packageSources>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<configuration>
|
||||||
echo ' <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />' >> /root/.nuget/NuGet/NuGet.Config && \
|
<packageSources>
|
||||||
echo ' <add key="musk.fun.nocr" value="https://gitea.musk.fun/api/packages/nocr/nuget/index.json" />' >> /root/.nuget/NuGet/NuGet.Config && \
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
||||||
echo ' </packageSources>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<add key="musk.fun.nocr" value="https://gitea.musk.fun/api/packages/nocr/nuget/index.json" />
|
||||||
echo ' <packageSourceMapping>' >> /root/.nuget/NuGet/NuGet.Config && \
|
</packageSources>
|
||||||
echo ' <packageSource key="musk.fun.nocr">' >> /root/.nuget/NuGet/NuGet.Config && \
|
<packageSourceMapping>
|
||||||
echo ' <package pattern="Nocr.*" />' >> /root/.nuget/NuGet/NuGet.Config && \
|
<packageSource key="musk.fun.nocr">
|
||||||
echo ' </packageSource>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<package pattern="Nocr.*" />
|
||||||
echo ' <packageSource key="nuget.org">' >> /root/.nuget/NuGet/NuGet.Config && \
|
</packageSource>
|
||||||
echo ' <package pattern="*" />' >> /root/.nuget/NuGet/NuGet.Config && \
|
<packageSource key="nuget.org">
|
||||||
echo ' </packageSource>' >> /root/.nuget/NuGet/NuGet.Config && \
|
<package pattern="*" />
|
||||||
echo ' </packageSourceMapping>' >> /root/.nuget/NuGet/NuGet.Config && \
|
</packageSource>
|
||||||
echo '</configuration>' >> /root/.nuget/NuGet/NuGet.Config
|
</packageSourceMapping>
|
||||||
|
</configuration>
|
||||||
|
EOF
|
||||||
|
|
||||||
# Restore with verbose logging
|
# Publish directly (restore + build + publish in one step)
|
||||||
RUN dotnet restore "src/Nocr.Users.Migrator/Nocr.Users.Migrator.csproj" --verbosity normal
|
|
||||||
WORKDIR "/src/src/Nocr.Users.Migrator"
|
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
|
RUN dotnet publish "Nocr.Users.Migrator.csproj" -c Release -o /app/publish
|
||||||
|
|
||||||
FROM base AS final
|
FROM base AS final
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=publish /app/publish .
|
COPY --from=build /app/publish .
|
||||||
ENTRYPOINT ["dotnet", "Nocr.Users.Migrator.dll"]
|
ENTRYPOINT ["dotnet", "Nocr.Users.Migrator.dll"]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user