
Visual Studio 2019를 사용하여 Windows용 Docker에서 실행되는 ASP.NET Core 3.1 앱을 개발하려고 합니다. 이것에 몇 가지 문제가 있습니다. 서비스를 시작 및 중지하고 일부 상태 확인 정보를 제공하려면 엔드포인트를 호스팅해야 합니다. 서비스는 타사 MSI에서 설치됩니다(파일을 복사하고 싶지만 지원되지 않고 실행하고 싶지 않으며 파일 및 레지스트리 변경도 포함됩니다). 기본(dotnet/sdk, /core 및 /aspnet) 이미지는 Nano 서버를 기반으로 하므로 MSI/msiexec를 지원하지 않습니다. ASP.Net Core와 msiexec(Server Core)를 지원하는 이미지를 찾기 위해 많은 수의 이미지를 시도했지만 큰 이미지만 우리의 요구 사항에 맞는 것 같습니다(8GB 이상 vs Nano 이미지의 경우 <500MB). 여기에 또 다른 가능성이 있나요? 이 시점에서는 빌드가 일관되게 작동하도록 할 수도 없습니다. 파일이 빌드되지만 최종 이미지에 포함되지는 않으며, 파일이 생성되면 도달할 수 없는 것 같습니다(포트 80/443, 5000/5001 또는 로컬 호스트 또는 컨테이너의 IP를 사용하여 실제 Docker 노출 포트 시도). 주소). 꽤 실망스러워지고 있어요! 어떤 도움이라도 받고 싶습니다.
- ASP.net Core 3.1 및 msiexec를 지원하는 적당한 크기의 이미지 찾기
- 파일을 최종 이미지에 올바르게 게시하고 복사하는 빌드 프로세스
- 컨테이너 외부에서 접근이 가능한 서비스입니다.
현재 도커파일:
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"]