# syntax=docker/dockerfile:1.7 FROM mcr.microsoft.com/dotnet/nightly/sdk:10.0 AS build WORKDIR /src COPY ops/cryptopro/linux-csp-service/CryptoProLinuxApi.csproj . RUN dotnet restore CryptoProLinuxApi.csproj COPY ops/cryptopro/linux-csp-service/ . RUN dotnet publish CryptoProLinuxApi.csproj -c Release -r linux-x64 --self-contained true \ /p:PublishSingleFile=true /p:DebugType=none /p:DebugSymbols=false -o /app/publish FROM ubuntu:22.04 ARG CRYPTOPRO_ACCEPT_EULA=0 ENV DEBIAN_FRONTEND=noninteractive \ CRYPTOPRO_ACCEPT_EULA=${CRYPTOPRO_ACCEPT_EULA} \ CRYPTOPRO_MINIMAL=1 WORKDIR /app # System deps for CryptoPro installer RUN apt-get update && \ apt-get install -y --no-install-recommends tar xz-utils ca-certificates && \ rm -rf /var/lib/apt/lists/* # CryptoPro packages (provided in repo) and installer COPY opt/cryptopro/downloads/*.tgz /opt/cryptopro/downloads/ COPY ops/cryptopro/install-linux-csp.sh /usr/local/bin/install-linux-csp.sh RUN chmod +x /usr/local/bin/install-linux-csp.sh # Install CryptoPro CSP (requires CRYPTOPRO_ACCEPT_EULA=1 at build/runtime) RUN CRYPTOPRO_ACCEPT_EULA=${CRYPTOPRO_ACCEPT_EULA} /usr/local/bin/install-linux-csp.sh # Copy published .NET app COPY --from=build /app/publish/ /app/ EXPOSE 8080 ENTRYPOINT ["/app/CryptoProLinuxApi"]