docker-base-distro/examples/Dockerfile.dotnet-runtime
Mathias Beaulieu-Duncan 734939fd12 Initial base distro with apko/Wolfi configs
Five minimal OCI image variants built with apko:
- base: ~5.5MB glibc runtime (wolfi-baselayout, libstdc++, ca-certs, tzdata)
- build: base + build tools (bash, git, curl, wget, unzip, xz)
- dotnet-runtime: base + ICU, OpenSSL, zlib for .NET runtime
- dotnet-sdk: build + ICU, OpenSSL, zlib for .NET SDK
- flutter: build variant configured for Flutter SDK

Includes melange package definitions for .NET 10 SDK/runtime and
Flutter SDK (for future use when building custom APKs).

CI/CD pipelines: publish on release, Scout CVE comparison on PRs,
weekly rebuild for Wolfi security patches.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 02:32:32 -05:00

44 lines
1.5 KiB
Docker

# Example: .NET 10 runtime image using base-distro
#
# Usage in accounting-api or route-api:
# FROM svrnty/base-distro:dotnet-sdk-latest AS build
# ... (build stage with .NET SDK installed on top) ...
#
# FROM svrnty/base-distro:dotnet-runtime-latest AS final
# COPY --from=build /app .
# ENTRYPOINT ["dotnet", "MyApp.dll"]
# Build stage: use the SDK base + install .NET SDK
FROM svrnty/base-distro:dotnet-sdk-latest AS build
# Install .NET 10 SDK (not yet in Wolfi, manual tarball install)
USER root
RUN curl -fsSL "https://dotnetcli.azureedge.net/dotnet/Sdk/10.0.100/dotnet-sdk-10.0.100-linux-$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/').tar.gz" \
-o /tmp/dotnet-sdk.tar.gz && \
mkdir -p /usr/share/dotnet && \
tar xf /tmp/dotnet-sdk.tar.gz -C /usr/share/dotnet && \
ln -sf /usr/share/dotnet/dotnet /usr/bin/dotnet && \
rm /tmp/dotnet-sdk.tar.gz
WORKDIR /source
COPY . .
RUN dotnet publish -o /app
# Runtime stage: minimal base + .NET runtime only
FROM svrnty/base-distro:dotnet-runtime-latest AS final
# Install .NET 10 ASP.NET runtime
USER root
RUN curl -fsSL "https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/10.0.0/aspnetcore-runtime-10.0.0-linux-$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/').tar.gz" \
-o /tmp/aspnet-runtime.tar.gz && \
mkdir -p /usr/share/dotnet && \
tar xf /tmp/aspnet-runtime.tar.gz -C /usr/share/dotnet && \
ln -sf /usr/share/dotnet/dotnet /usr/bin/dotnet && \
rm /tmp/aspnet-runtime.tar.gz
WORKDIR /app
COPY --from=build /app .
USER 65532
ENTRYPOINT ["dotnet", "MyApp.dll"]