📄 .containerfile
FROM mcr.microsoft.com/dotnet/sdk:10.0@sha256:c7445f141c04f1a6b454181bd098dcfa606c61ba0bd213d0a702489e5bd4cd71 AS build

WORKDIR /app

RUN apt-get update && apt-get install -y build-essential curl
RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"

COPY ./GitBrowser.SyntaxHighlighter/GitBrowser.SyntaxHighlighter.csproj ./GitBrowser.SyntaxHighlighter/
COPY ./GitBrowser.SyntaxHighlighter/packages.lock.json ./GitBrowser.SyntaxHighlighter/
COPY ./GitBrowser.SyntaxHighlighter/Cargo.toml ./GitBrowser.SyntaxHighlighter/
COPY ./GitBrowser.SyntaxHighlighter/Cargo.lock ./GitBrowser.SyntaxHighlighter/
RUN mkdir ./GitBrowser.SyntaxHighlighter/src && touch ./GitBrowser.SyntaxHighlighter/src/lib.rs
RUN cargo build --release --locked --manifest-path ./GitBrowser.SyntaxHighlighter/Cargo.toml

COPY ./GitBrowser.slnx ./global.json ./Directory.Packages.props ./Directory.Build.props ./.gitignore ./.editorconfig ./
COPY ./GitBrowser/GitBrowser.csproj ./GitBrowser/packages.lock.json ./GitBrowser/

RUN dotnet restore --locked-mode

COPY ./GitBrowser.SyntaxHighlighter ./GitBrowser.SyntaxHighlighter
RUN touch -am ./GitBrowser.SyntaxHighlighter/src/lib.rs
COPY ./GitBrowser/ ./GitBrowser/

RUN dotnet build ./GitBrowser/GitBrowser.csproj --no-restore --configuration Release

RUN dotnet publish ./GitBrowser/GitBrowser.csproj --no-build --configuration Release --output /out

FROM mcr.microsoft.com/dotnet/aspnet:10.0@sha256:7c4246c1c384319346d45b3e24a10a21d5b6fc9b36a04790e1588148ff8055b0 AS release

WORKDIR /app

COPY --from=build /out ./

ENTRYPOINT ["dotnet", "./GitBrowser.dll"]