在IIS上Dockerize ASP Classic

在IIS上Dockerize ASP Classic,docker,asp-classic,iis-7,docker-for-windows,docker-desktop,Docker,Asp Classic,Iis 7,Docker For Windows,Docker Desktop,微软一直在投资在windows上使用docker Desktop for windows运行docker。是否可以通过Docker在IIS上运行传统ASP Classic应用程序?怎么做 我还没有尝试过,但运行经典ASP应该不是问题。microsoft/iis映像基于microsoft/windowsservercore映像,该映像是一个完整的服务器核心安装,还包括32位支持 默认情况下,ASP功能不存在,因此Dockerfile必须按以下方式启动: # escape=` FROM micros

微软一直在投资在windows上使用docker Desktop for windows运行docker。是否可以通过Docker在IIS上运行传统ASP Classic应用程序?怎么做


我还没有尝试过,但运行经典ASP应该不是问题。
microsoft/iis
映像基于
microsoft/windowsservercore
映像,该映像是一个完整的服务器核心安装,还包括32位支持

默认情况下,ASP功能不存在,因此Dockerfile必须按以下方式启动:

# escape=`
FROM microsoft/iis
SHELL ["powershell", "-command"]
RUN Install-WindowsFeature Web-ASP
(escape和SHELL行使构建Windows友好DockerFile变得更容易,请参阅)


然后,您将
复制ASP应用程序文件夹中的
,并使用PowerShell命令运行IIS安装程序的其余部分。提供了一些很好的指导,并展示了如何使用PowerShell配置网站。

我终于实现了这一切。它比运行简单的Dockerfile复杂得多,因为它最初是在2002年开发的一个站点。有一些模块需要下载和安装,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

更新容器运行的Windows服务器(使用Windows Update)以匹配容器映像版本非常重要。不这样做会引发各种难以追踪的问题。

Aweasome很想尝试,但遇到了一个新问题-docker hub上的windowsservercore映像似乎已损坏-在两台机器和两个网络上进行了尝试,但未能成功下载:(`➜ docker使用默认标记拉动microsoft/windowsservercore:最新最新:从microsoft/windowsservercore 9c7f9c7d9bc2拉动:9秒后重试de5064718b3f:10秒后重试`最终“未知blob”猜测这是因为您只能在windows上运行windows容器:(如果您使用的是Windows Server 2016,请确保您在Windows 10上运行Windows Update,您将希望进入内部轨道。对于最新版本,我对Hub没有任何问题。埃尔顿·斯通曼的回答对于引导我走向正确的方向非常重要,因此请确保您也查看下面的内容,以便更好地理解。愚蠢的question但实际上如何在Windows计算机上部署它,它也支持ci/cd吗?SQL dB是在docker容器内部还是外部?ci/cd是一个完全独立的进程-您可以在ci/cd进程中使用DockerFile,是的。dB将在该容器外部运行,可能在另一个容器中或在裸机上运行-它已过时这个容器关注的方面。至于如何在Windows上部署-运行Kubernetes之类的orchestrator。在kube for Windows上查找文档并遵循这些文档。谢谢,伙计,确实非常有用。