webdevqa.jp.net

Dockerize ASP Classic on IIS

Microsoftは、Docker Desktop for Windowsを使用してWindowsでdockerを実行することに投資しています。レガシーASPクラシックアプリケーションをDockerを介してIISで実行できますか?方法は?

https://hub.docker.com/r/Microsoft/iis/

21

これでようやくすべてが動作しました。元々は2002年に開発されたサイトだったため、単純なDockerfileを実行するよりもはるかに複雑でした。ダウンロードしてインストールする必要があるモジュール、ロックを解除する必要があるweb.configセクション、およびODBC必要なデータ接続。私の最終的なDockerファイルは次のようになりました。次の人の助けになることを願っています!

# escape=`

FROM Microsoft/iis
Shell ["powershell", "-command"]

RUN Install-WindowsFeature Web-ASP; `
    Install-WindowsFeature Web-CGI; `
    Install-WindowsFeature Web-ISAPI-Ext; `
    Install-WindowsFeature Web-ISAPI-Filter; `
    Install-WindowsFeature Web-Includes; `
    Install-WindowsFeature Web-HTTP-Errors; `
    Install-WindowsFeature Web-Common-HTTP; `
    Install-WindowsFeature Web-Performance; `
    Install-WindowsFeature WAS; `
    Import-module IISAdministration;

RUN md c:/msi;

RUN Invoke-WebRequest 'http://download.Microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_AMD64.msi' -OutFile c:/msi/urlrewrite2.msi; `
    Start-Process 'c:/msi/urlrewrite2.msi' '/qn' -PassThru | Wait-Process;

RUN Invoke-WebRequest 'https://download.Microsoft.com/download/1/E/7/1E7B1181-3974-4B29-9A47-CC857B271AA2/English/X64/msodbcsql.msi' -OutFile c:/msi/msodbcsql.msi; 
RUN ["cmd", "/S", "/C", "c:\\windows\\syswow64\\msiexec", "/i", "c:\\msi\\msodbcsql.msi", "IACCEPTMSODBCSQLLICENSETERMS=YES", "ADDLOCAL=ALL", "/qn"];

EXPOSE 8000
RUN Remove-Website -Name 'Default Web Site'; `
    md c:\mywebsite; `
    New-IISSite -Name "mywebsite" `
                -PhysicalPath 'c:\mywebsite' `
                -BindingInformation "*:8000:";

RUN & c:\windows\system32\inetsrv\appcmd.exe `
    unlock config `
    /section:system.webServer/asp

RUN & c:\windows\system32\inetsrv\appcmd.exe `
      unlock config `
      /section:system.webServer/handlers

RUN & c:\windows\system32\inetsrv\appcmd.exe `
      unlock config `
      /section:system.webServer/modules

RUN Add-OdbcDsn -Name "mywebsite" `
                -DriverName "\"ODBC Driver 13 For SQL Server\"" `
                -DsnType "System" ` 
                -SetPropertyValue @("\"Server=XXXX.us-east-2.rds.amazonaws.com\"", "\"Trusted_Connection=No\"");

ADD . c:\mywebsite
40

試したことはありませんが、従来のASPを実行しても問題にはなりません。 Microsoft/iisイメージは、完全なServer CoreインストールであるMicrosoft/windowsservercoreイメージに基づいており、32ビットのサポートも含まれています。

ASP機能はデフォルトでは存在しないため、Dockerfileは次のように開始する必要があります。

# escape=`
FROM Microsoft/iis
Shell ["powershell", "-command"]
RUN Install-WindowsFeature Web-ASP

escapeShellの行は、WindowsフレンドリなDockerfileを簡単に作成できるようにします。 Windows、Dockerfiles、およびバックティックバックスラッシュバックラッシ )。

次に、ASP appフォルダーでCOPYを実行し、残りのIIS PowerShellコマンドを使用してセットアップします。 この質問 にはいくつかの良い指針があり、 ASP.NETアプリ用のこのDockerfile はPowerShellを使用してWebサイトを構成できます。

3
Elton Stoneman

コンテナーが実行されるWindowsサーバー(Windows Updateを使用)を更新して、コンテナーイメージのバージョンと一致させることは非常に重要です。そうしないと、あらゆる種類の追跡が困難な問題が発生します。

0
anbu