Установка MSI в контейнер Windows ASP.NET Core App Service

Установка MSI в контейнер Windows ASP.NET Core App Service

Я пытаюсь использовать Visual Studio 2019 для разработки приложения ASP.NET Core 3.1, работающего в Docker для Windows. У меня возникло несколько проблем с этим. Мне нужно разместить конечную точку для запуска и остановки службы и предоставить некоторую информацию о проверке работоспособности. Службы устанавливаются из стороннего MSI (я бы с удовольствием просто скопировал файлы, но мы не хотим запускать его без поддержки, плюс его файлы и изменения реестра). Базовые образы (dotnet/sdk, /core и /aspnet) основаны на Nano Server, поэтому не поддерживают MSI/msiexec. Я перепробовал большое количество образов, чтобы найти тот, который поддерживает ASP.Net Core плюс msiexec (Server Core), но, похоже, только большие образы соответствуют нашим потребностям (8+ ГБ против <500 МБ для Nano). Есть ли здесь другая возможность? На данный момент я даже не могу заставить сборку работать стабильно. Файлы будут созданы, но не попадут в финальный образ, а если и попадут, то, похоже, не смогу до них добраться (пробую порты 80/443, 5000/5001 или фактические порты, открытые Docker, с localhost или IP-адресом контейнера). Это начинает раздражать! Буду рад любой помощи.

  1. Поиск образа разумного размера, поддерживающего ASP.net Core 3.1 и msiexec
  2. Построить процесс для правильной публикации и копирования файлов в финальный образ
  3. Доступ к услуге должен быть возможен снаружи контейнера.

Текущий 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"]

Связанный контент