Instalando o MSI no contêiner do Windows do serviço de aplicativo ASP.NET Core

Instalando o MSI no contêiner do Windows do serviço de aplicativo ASP.NET Core

Estou tentando usar o Visual Studio 2019 para desenvolver um aplicativo ASP.NET Core 3.1 em execução no Docker para Windows. Estou tendo alguns problemas com isso. Preciso hospedar um endpoint para iniciar e interromper um serviço e fornecer algumas informações de verificação de integridade. Os serviços são instalados a partir de um MSI de terceiros (adoraria apenas copiar os arquivos, mas não queremos executá-lo sem suporte, além de arquivos e alterações no registro). As imagens básicas (dotnet/sdk,/core e/aspnet) são baseadas no Nano Server, portanto, não oferecem suporte a MSI/msiexec. Tentei um grande número de imagens para encontrar uma que suporte ASP.Net Core mais msiexec (Server Core), mas parece que apenas as imagens grandes atendem às nossas necessidades (8+ GB vs <500 MB para as Nano). Existe outra possibilidade aqui? Neste ponto, não consigo nem fazer a compilação funcionar de forma consistente. Os arquivos serão compilados, mas não terminarão na imagem final e, se conseguirem, não consigo atingi-los (tentando as portas 80/443, 5000/5001 ou as portas reais expostas ao Docker, com localhost ou o IP do contêiner endereço). Está ficando muito frustrante! Eu adoraria qualquer ajuda.

  1. Encontrar uma imagem de tamanho razoável que suporte ASP.net Core 3.1 e msiexec
  2. Processo de construção para publicar e copiar arquivos corretamente para a imagem final
  3. Serviço a ser acessível de fora do contêiner.

Arquivo de encaixe atual:

FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 AS base

WORKDIR /app
EXPOSE 80
EXPOSE 443

# INSTALL dotnet
ADD https://download.visualstudio.microsoft.com/download/pr/c37ece76-1305-4042-a9e6-58e7cb1b0bf6/75c20ff59335e370985b4f03fa637fcb/aspnetcore-runtime-3.1.18-win-x64.exe /symedical/
ADD https://download.visualstudio.microsoft.com/download/pr/7d09d7c0-8902-4467-9268-d7f584923cde/eddcb12257e68b030bc1b4baf9a68681/dotnet-runtime-3.1.18-win-x64.exe /symedical/

RUN C:/symedical/aspnetcore-runtime-3.1.18-win-x64.exe /install /quiet /norestart && \
    C:/symedical/dotnet-runtime-3.1.18-win-x64.exe /install /quiet

ARG InstallerSrc="dist/installers/ThirdPartyClientServices.msi"
ARG InstallerDest="/install/"
ADD ${InstallerSrc} ${InstallerDest}

ARG InstallerSrc="dist/scripts/"
ADD ${InstallerSrc} ${InstallerDest}

RUN powershell -file "c:\dist\scripts\install-msi.ps1"
######

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["Distribution/Distribution.csproj", "Distribution/"]

RUN dotnet restore "Distribution/Distribution.csproj"
COPY . .
WORKDIR "/src/Distribution"
RUN dotnet build "Distribution.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Distribution.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

ENTRYPOINT ["dotnet", "Distribution.dll"]

informação relacionada