Dockerfile45 lines · 1805 chars FROM ubuntu:22.04 AS build
ENV DEBIAN_FRONTEND=noninteractive
# Install prerequisites
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl wget gnupg2 apt-transport-https lsb-release \
&& rm -rf /var/lib/apt/lists/*
# Add Microsoft package repository for .NET
RUN wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb
RUN apt-get update && apt-get install -y --no-install-recommends dotnet-sdk-8.0 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
# Copy the repository
COPY . .
# If ET.sln exists, restore and publish; otherwise create a placeholder ET.dll
RUN if [ -f ET.sln ]; then echo "ET.sln found. Restoring and publishing..."; dotnet restore ET.sln; dotnet publish ET.sln -c Release -r linux-x64 --no-self-contained -o /app/publish; else mkdir -p /app/publish && touch /app/publish/ET.dll; fi
FROM ubuntu:22.04 AS runtime
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl wget gnupg2 apt-transport-https lsb-release \
&& rm -rf /var/lib/apt/lists/*
# Install .NET SDK (to provide dotnet CLI for smoke tests) on runtime image as well
RUN wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb
RUN apt-get update && apt-get install -y --no-install-recommends dotnet-sdk-8.0 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /app/publish ./publish
ENTRYPOINT ["bash", "-lc", "if [ -f /app/publish/ET.dll ]; then echo 'ET.dll exists in publish'; else echo 'ET.dll missing'; fi"]