Încerc să folosesc Visual Studio 2019 pentru a dezvolta o aplicație ASP.NET Core 3.1 care rulează în Docker pentru Windows. Am câteva probleme cu asta. Trebuie să găzduiesc un punct final pentru a porni și opri un serviciu și pentru a oferi informații despre verificarea stării de sănătate. Serviciile sunt instalate de la un MSI terță parte (mi-ar plăcea să copiez fișiere, dar nu vrem să-l rulăm neacceptat, plus fișierele și modificările din registru). Imaginile de bază (dotnet/sdk, /core și /aspnet) se bazează pe Nano Server, așa că nu acceptă MSI/msiexec. Am încercat un număr mare de imagini pentru a găsi una care acceptă ASP.Net Core plus msiexec (Server Core), dar se pare că doar imaginile mari se potrivesc nevoilor noastre (8+ GB vs <500MB pentru cele Nano). Există o altă posibilitate aici? În acest moment, nici măcar nu pot face ca build să funcționeze constant. Fișierele se vor construi, dar nu vor ajunge în imaginea finală și, dacă ajung, nu pot să le lovesc (încercând porturile 80/443, 5000/5001 sau porturile reale expuse Docker, cu localhost sau IP-ul containerului abordare). Devine destul de frustrant! Mi-ar plăcea orice ajutor.
- Găsirea unei imagini de dimensiuni rezonabile care acceptă ASP.net Core 3.1 și msiexec
- Procesul de compilare pentru a publica și a copia corect fișierele în imaginea finală
- Serviciul să fie accesibil din exteriorul containerului.
Dockerfile curent:
DE LA mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 AS de bază
WORKDIR /app
EXPUNEREA 80
EXPUNEREA 443
# INSTALAȚI dotnet
ADAUGĂ https://download.visualstudio.microsoft.com/download/pr/c37ece76-1305-4042-a9e6-58e7cb1b0bf6/75c20ff59335e370985b4f03fa637fcb/aspnetwins-exe-/6-runtime-3.1.medicy.
ADAUGĂ https://download.visualstudio.microsoft.com/download/pr/7d09d7c0-8902-4467-9268-d7f584923cde/eddcb12257e68b030bc1b4baf9a68681/dotnet-1468/exe/dotnet-14-runtime-3winys.
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/"
ADAUGĂ ${InstallerSrc} ${InstallerDest}
ARG InstallerSrc="dist/scripts/"
ADAUGĂ ${InstallerSrc} ${InstallerDest}
RUN powershell -fișier „c:\dist\scripts\install-msi.ps1”
######
DE LA mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY [„Distribution/Distribution.csproj”, „Distribution/”]
RUN dotnet restaurare „Distribution/Distribution.csproj”
COPIE . .
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
DE LA baza AS finala
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT [„dotnet”, „Distribution.dll”]