Installieren von MSI im ASP.NET Core App Service Windows-Container

Installieren von MSI im ASP.NET Core App Service Windows-Container

Ich versuche, mit Visual Studio 2019 eine ASP.NET Core 3.1-App zu entwickeln, die in Docker für Windows ausgeführt wird. Ich habe dabei einige Probleme. Ich muss einen Endpunkt hosten, um einen Dienst zu starten und zu stoppen und einige Informationen zur Integritätsprüfung bereitzustellen. Die Dienste werden von einem MSI eines Drittanbieters installiert (ich würde gerne einfach Dateien kopieren, aber wir möchten es nicht ohne Unterstützung ausführen, plus seine Dateien und Registrierungsänderungen). Die grundlegenden Images (dotnet/sdk, /core und /aspnet) basieren auf Nano Server und unterstützen daher MSI/msiexec nicht. Ich habe viele Images ausprobiert, um eines zu finden, das ASP.Net Core plus msiexec (Server Core) unterstützt, aber es scheint, dass nur die großen Images unseren Anforderungen entsprechen (8+ GB vs. <500 MB bei den Nano-Images). Gibt es hier eine andere Möglichkeit? An diesem Punkt kann ich nicht einmal den Build konsistent zum Laufen bringen. Dateien werden zwar erstellt, landen aber nicht im endgültigen Image, und wenn sie es schaffen, kann ich sie scheinbar nicht erreichen (ich versuche es mit den Ports 80/443, 5000/5001 oder den tatsächlichen von Docker bereitgestellten Ports mit localhost oder der IP-Adresse des Containers). Es wird langsam ziemlich frustrierend! Ich freue mich über jede Hilfe.

  1. Suchen eines Images mit angemessener Größe, das ASP.net Core 3.1 und msiexec unterstützt
  2. Erstellen Sie den Prozess zum ordnungsgemäßen Veröffentlichen und Kopieren von Dateien in das endgültige Image
  3. Der Dienst muss von außerhalb des Containers zugänglich sein.

Aktuelles Dockerfile:

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"]

verwandte Informationen