Рейтинг:1

Установка MSI в контейнер Windows службы приложений ASP.NET Core

флаг cn

Я пытаюсь использовать 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, с локальным хостом или IP контейнера адрес). Это становится довольно неприятно! Буду рад любой помощи.

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

Текущий докерфайл:

ОТ mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 База AS

РАБОЧИЙКАТАЛОГ /приложение
ЭКСПОЗИЦИЯ 80
ВЫСТАВИТЬ 443

# УСТАНОВИТЬ дотнет
ДОБАВИТЬ https://download.visualstudio.microsoft.com/download/pr/c37ece76-1305-4042-a9e6-58e7cb1b0bf6/75c20ff59335e370985b4f03fa637fcb/aspnetcore-runtime-3.1.18-win-x64.exe /symedical/
ДОБАВИТЬ https://download.visualstudio.microsoft.com/download/pr/7d09d7c0-8902-4467-9268-d7f584923cde/eddcb12257e68b030bc1b4baf9a68681/dotnet-runtime-3.1.18-win-x64.exe /symedical/

ЗАПУСК 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="/install/"
ДОБАВИТЬ ${InstallerSrc} ${InstallerDest}

ARG InstallerSrc="dist/scripts/"
ДОБАВИТЬ ${InstallerSrc} ${InstallerDest}

ЗАПУСК powershell -файл "c:\dist\scripts\install-msi.ps1"
######

С mcr.microsoft.com/dotnet/sdk:3.1 Сборка AS
РАБОЧИЙ КАТАЛОГ /источник
КОПИРОВАТЬ ["Распространение/Распространение.csproj", "Распространение/"]

RUN восстановление dotnet "Distribution/Distribution.csproj"
КОПИРОВАТЬ . .
РАБОЧИЙ КАТАЛОГ "/src/Distribution"
ЗАПУСТИТЬ сборку dotnet "Distribution.csproj" -c Release -o /app/build

ИЗ сборки КАК опубликовать
RUN dotnet publish «Distribution.csproj» -c Release -o /app/publish

ОТ базы КАК окончательная
РАБОЧИЙКАТАЛОГ /приложение
КОПИРОВАТЬ --from=publish /app/publish .

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.