
Estoy intentando utilizar Visual Studio 2019 para desarrollar una aplicación ASP.NET Core 3.1 que se ejecuta en Docker para Windows. Tengo algunos problemas con esto. Necesito alojar un punto final para iniciar y detener un servicio y proporcionar información de verificación de estado. Los servicios se instalan desde un MSI de terceros (me encantaría simplemente copiar archivos, pero no queremos ejecutarlos sin soporte, además de sus archivos y cambios de registro). Las imágenes básicas (dotnet/sdk, /core y /aspnet) se basan en Nano Server, por lo que no son compatibles con MSI/msiexec. Probé una gran cantidad de imágenes para encontrar una que admita ASP.Net Core más msiexec (Server Core), pero parece que solo las imágenes grandes se ajustan a nuestras necesidades (8+ GB frente a <500 MB para las Nano). ¿Existe otra posibilidad aquí? En este punto, ni siquiera puedo hacer que la compilación funcione de manera consistente. Los archivos se compilarán pero no terminarán en la imagen final, y si lo logran, parece que no puedo acceder a ellos (probando los puertos 80/443, 5000/5001 o los puertos reales expuestos a Docker, con localhost o la IP del contenedor). DIRECCIÓN). ¡Se está volviendo bastante frustrante! Me encantaría cualquier ayuda.
- Encontrar una imagen de tamaño razonable que admita ASP.net Core 3.1 y msiexec
- Proceso de compilación para publicar y copiar archivos correctamente a la imagen final
- Servicio accesible desde el exterior del contenedor.
Archivo acoplable actual:
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"]