Classic ASPをDockerで動かす

モダンな環境でレガシーASPを動かしてみるシリーズ第二弾。

Docker for Windowsで動かしています。
Windows Containerを動かすためにタスクトレイのDockerアイコンから「Switch to Windows containers…」を実行しておきましょう。

同一階層にDockerfileとASPファイルを用意します。
FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016

RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*
WORKDIR /inetpub/wwwroot
RUN powershell -NoProfile -Command Install-WindowsFeature Web-ASP

COPY index.asp .
<html>
<body>
<%
Response.Write "<p>Hello Classic ASP on Docker Container!</p>"
%>
<p><%= Now() %></p>
</body>
</html>
コンテナイメージをビルドします。

Windows Server IISのイメージをここからプルして、ドキュメントルートの初期化、ASPの有効化、ASPファイルの配置を行ってます。
>docker build -t asp .
Sending build context to Docker daemon  4.096kB
Step 1/5 : FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016
 ---> b963809d8abb
Step 2/5 : RUN powershell -NoProfile -Command Remove-Item -Recurse C:\inetpub\wwwroot\*
 ---> Using cache
 ---> 32b34d28cc9f
Step 3/5 : WORKDIR /inetpub/wwwroot
 ---> Using cache
 ---> 1dcfe62b37d3
Step 4/5 : RUN powershell -NoProfile -Command Install-WindowsFeature Web-ASP
 ---> Running in 85930962d5bf

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {Application Development, ASP, ISAPI E...


Removing intermediate container 85930962d5bf
 ---> 0d33b1efcace
Step 5/5 : COPY index.asp .
 ---> 09dea075aae5
Successfully built 09dea075aae5
Successfully tagged asp:latest
コンテナを立ち上げてリクエストしてみます。
>docker run -d -p 8080:80 --name my-asp-site asp
7e2424638575027020ade25fa7b0f30779a8a111ec096974142afe451e18cefb

>curl http://localhost:8080/index.asp
<html>
<body>
<p>Hello Classic ASP on Docker Container!</p>
<p>8/8/2020 9:07:08 AM</p>
</body>
</html>
ちゃんとリクエストが処理されてます。

コンテナ化できればクラウド環境への可搬性も向上するので、ASPの可能性が広がりますね。
はやくASPやめよう