How to run a .NET Core 3.1.3 x86 App in Docker

  .net-core, c#, docker, dockerfile, x86

I have a .NET Core 3.1.3 Web API project that is built as x86. It has to be x86 because it makes use of an x86 C++ DLL via dllimport. Outside of Docker the application runs as expected. However, it fails immediately as soon as I add Windows Docker support. I believe from SO research that it fails because Microsoft does not provide any x86 base image for .NET Core. The default Windows Docker base image is currently

I’ve tried using as the base image, but I then get an error saying “Unable to start program: ‘C:Program Filesdotnetdotnet.exe.'” I assume this is because this exe does not exist on the base image used. And, presumably for x86 “C:Program Files (x86)dotnetdotnet.exe” would actually be required.

My current Dockerfile is:

FROM AS base

FROM AS build
COPY ["WAPTCoreWebService/WAPTCoreWebService.csproj", "WAPTCoreWebService/"]
RUN dotnet restore "WAPTCoreWebService/WAPTCoreWebService.csproj"
COPY . .
WORKDIR "/src/WAPTCoreWebService"
RUN dotnet build "WAPTCoreWebService.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WAPTCoreWebService.csproj" -c Release -o /app/publish

FROM base AS final
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WAPTCoreWebService.dll"]

Am I interpreting this error correctly. If not, what does it mean? If so, how do I add support to build an x86 version of my .NET Core app in this image? Do I need to download and run dotnet-runtime-3.1.3-win-x86.exe somehow? If so, how?

Source: StackOverflow