ce7cb702218693d08ea6d83464d2457c9250027c

This commit is contained in:
ms2k 2026-11-12 20:46:28 +09:00
commit 34c5f8963c

View file

@ -0,0 +1,63 @@
# syntax=docker/dockerfile:1.7
# Bootstrap only when no F# Runner image is available; Project Delivery owns the canonical build.
ARG SDK=10.0.403-noble@sha256:de4fe90a98845d75910b9769662465c84de1a934665c431279d1382b2bddc02b
ARG RUNTIME=10.0.14@sha256:a3f9f81954b9c810af2ed18849716c8dc74a4707bd0907fdbd69be81554c0f30
ARG APKO=cgr.dev/chainguard/apko@sha256:c53d15d53090012cdc9f138b667a73a283b0b5bba1b61963ae84be6e28cfe5a0
FROM ${APKO} AS apko
FROM mcr.microsoft.com/dotnet/sdk:${SDK} AS build-root
ARG TARGETARCH
COPY --from=apko /usr/bin/apko /usr/local/bin/apko
COPY services/project-delivery/k8s/workflows/fsharp-runner/fsharp-runner.apko.yaml services/project-delivery/k8s/workflows/fsharp-runner/fsharp-runner.apko.lock.json /configuration/
RUN set -eu; \
case "$TARGETARCH" in \
amd64) arch=x86_64 ;; \
arm64) arch=arm64 ;; \
*) exit 1 ;; \
esac; \
mkdir -p /image /rootfs; \
apko build --sbom=false --arch "$arch" --lockfile /configuration/fsharp-runner.apko.lock.json /configuration/fsharp-runner.apko.yaml fsharp-runner:root /image/root.tar; \
mkdir /image/export; \
tar -xf /image/root.tar -C /image/export; \
tar --exclude=dev --exclude=./dev -xf /image/export/*.tar.gz -C /rootfs; \
rm -rf /rootfs/dev /rootfs/usr/share/bash-completion /rootfs/usr/share/doc /rootfs/usr/share/man
FROM mcr.microsoft.com/dotnet/sdk:${SDK} AS sdk
COPY packages/fsharp-runner/global.json /source/global.json
COPY packages/fsharp-runner/Directory.Build.props /Directory.Build.props
COPY packages/fsharp-runner/runner.csproj packages/fsharp-runner/packages.lock.json /restore/
COPY packages/fsharp-runner/oci/ /oci/
COPY packages/fsharp-runner/hostexec/ /hostexec/
RUN mkdir /packages && \
dotnet restore --locked-mode --packages /packages /restore/runner.csproj && \
dotnet build --configuration Release --no-restore --output /managed-out /restore/runner.csproj && \
dotnet publish --configuration Release --output /oci-out /oci/Oci.csproj && \
dotnet publish --configuration Release --output /host-out /hostexec/HostExec.csproj
FROM mcr.microsoft.com/dotnet/runtime:${RUNTIME} AS runtime
FROM scratch
COPY --from=build-root /rootfs/ /
COPY --from=runtime /usr/share/dotnet/ /usr/share/dotnet/
COPY --from=sdk /usr/share/dotnet/sdk/10.0.403/FSharp/ /opt/fsi/
COPY --from=sdk /managed-out/AWSSDK.Core.dll /managed-out/AWSSDK.S3.dll /managed-out/SharpCompress.dll /managed-out/ZstdSharp.dll /opt/fsi/packages/
COPY --from=sdk /oci-out/Oci.dll /opt/fsi/packages/Oci.dll
COPY --from=sdk /host-out/HostExec.dll /host-out/HostExec.deps.json /host-out/HostExec.runtimeconfig.json /opt/fsi/packages/
ENV DOTNET_MULTILEVEL_LOOKUP=0
ENV DOTNET_ROOT=/usr/share/dotnet
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
ENV HOME=/tmp
USER 65532:65532
WORKDIR /work
ENTRYPOINT ["/usr/share/dotnet/dotnet", "/opt/fsi/fsi.dll", "--exec"]