FROM node:15-alpine as client-build WORKDIR /app COPY /src . WORKDIR /app/designer/elsa-workflows-studio RUN npm install --force RUN npm run build WORKDIR /app/designer/bindings/blazor/Elsa.Designer.Bindings.Blazor RUN npm install --force RUN npm run build FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim-amd64 AS build WORKDIR /source # restore packages COPY ./src/samples/dashboard/aspnetcore/ElsaDashboard.Samples.AspNetCore.Monolith/ElsaDashboard.Samples.AspNetCore.Monolith.csproj ./src/samples/dashboard/aspnetcore/ElsaDashboard.Samples.AspNetCore.Monolith/ElsaDashboard.Samples.AspNetCore.Monolith.csproj RUN dotnet restore "./src/samples/dashboard/aspnetcore/ElsaDashboard.Samples.AspNetCore.Monolith/ElsaDashboard.Samples.AspNetCore.Monolith.csproj" # copy required source code COPY src/. ./src COPY *.props ./ COPY ./Nuget.Config ./ COPY --from=client-build /app/designer/elsa-workflows-studio ./src/designer/elsa-workflows-studio COPY --from=client-build /app/designer/bindings/blazor/Elsa.Designer.Bindings.Blazor ./src/designer/bindings/blazor/Elsa.Designer.Bindings.Blazor # build and publish (UseAppHost=false created platform independent binaries) WORKDIR /source/src/samples/dashboard/aspnetcore/ElsaDashboard.Samples.AspNetCore.Monolith RUN dotnet build "ElsaDashboard.Samples.AspNetCore.Monolith.csproj" -c Release -o /app/build RUN dotnet publish "ElsaDashboard.Samples.AspNetCore.Monolith.csproj" -c Release -o /app/publish /p:UseAppHost=false --no-restore # move binaries into smaller base image FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base WORKDIR /app COPY --from=build /app/publish ./ EXPOSE 80/tcp EXPOSE 443/tcp ENTRYPOINT ["dotnet", "ElsaDashboard.Samples.AspNetCore.Monolith.dll"]