Running an ASP.NET 2.0 WebForm app that relies on a 32 bit COM library.
The Dockerfile
assumes that your solution is named COMClient and is placed at the same level as the Dockerfile
. The Dockerfile
also assume that you’ve published the application to the bin\Release\Publish
folder.
The Dockerfile
downloads and installs the VC++ redistributable in a special way due to the fact that the installer is asynchronous. The PowerShell Start-Process
and Wait-Process
Cmdlets synchronize the operation so the docker build doesn’t terminate prematurely.
The Dockerfile
then registers the ATL/COM DLL that the .NET 2.0 project depends on. Care is taken to use the 32-bit regsvr.exe
which is located in c:\Windows\SysWOW64
.
Just before putting the published artifacts into c:\inetpub\wwwroot
32-bit execution is enabled in IIS.
FROM mcr.microsoft.com/dotnet/framework/aspnet:3.5
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'SilentlyContinue'; $ProgressPreference = 'SilentlyContinue';"]
EXPOSE 80
# Download vc++ redist
ADD https://download.microsoft.com/download/C/6/D/C6D0FD4E-9E53-4897-9B91-836EBA2AACD3/vcredist_x86.exe /vcredist_x86.exe
# SYNCHRONOUSLY install the vc++ redist
RUN Start-Process -filepath C:\vcredist_x86.exe -ArgumentList "/install", "/passive", "/norestart", "'/log a.txt'" -PassThru | wait-process
# Register the ATL/COM dll
COPY ./ATLPKS.dll c:/ATLPKS/
RUN c:/Windows/SysWOW64/regsvr32.exe /s c:/ATLPKS/ATLPKS.dll
# Let IIS run 32-bit apps
RUN "c:\\Windows\\System32\\inetsrv\\appcmd.exe set apppool /apppool.name:DefaultAppPool /enable32BitAppOnWin64:true"
WORKDIR /inetpub/wwwroot
COPY COMClient/COMClient/bin/Release/Publish/bin/* ./bin/
COPY COMClient/COMClient/bin/Release/Publish/* ./
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: dotnet2atlcom
name: dotnet2atlcom
spec:
replicas: 1
template:
metadata:
labels:
app: dotnet2atlcom
name: dotnet2atlcom
spec:
containers:
- name: webapp
image: <insert your repo/image:tag here>
ports:
- containerPort: 80
tolerations:
- key: windows
value: "1803"
effect: NoSchedule
nodeSelector:
beta.kubernetes.io/os: windows