微软一直在投资于在Windows上运行Docker,使用Docker Desktop for Windows。是否可以通过Docker在IIS上运行传统的ASP Classic应用程序?如何操作?
微软一直在投资于在Windows上运行Docker,使用Docker Desktop for Windows。是否可以通过Docker在IIS上运行传统的ASP Classic应用程序?如何操作?
我终于把这个东西搞定了。它比运行一个简单的 Dockerfile 要复杂得多,因为它是一个最初开发于2002年的网站。必须下载和安装模块,解锁 Web.config 部分,并建立 ODBC 数据连接。我的最终 Dockerfile 如下-希望能对下一个人有所帮助!
# escape=`
FROM mcr.microsoft.com/windows/servercore/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
我还没有尝试过,但运行经典ASP应该不是问题。 microsoft/iis
镜像基于 microsoft/windowsservercore
镜像构建而成,后者是完整的Server Core安装版本,同时也包含32位支持。
ASP功能默认不会存在,因此您的Dockerfile应该从以下内容开始:
# escape=`
FROM microsoft/iis
SHELL ["powershell", "-command"]
RUN Install-WindowsFeature Web-ASP
escape
和SHELL
行只是为了更容易构建友好于Windows的Dockerfile,详情请参见Windows、Dockerfile和反引号反斜杠反斜杠)COPY
您的ASP应用程序文件夹,并使用PowerShell命令运行其余的IIS设置。 这个问题提供了一些很好的指导,而这个ASP.NET应用程序的Dockerfile则展示了如何使用PowerShell配置网站。