Microsoft вкладывает средства в запуск Docker в Windows с помощью Docker Desktop для Windows. Можно ли запустить устаревшее приложение ASP Classic в IIS через Docker? Как?
Dockerize ASP Classic на IIS
Ответы (3)
Наконец-то у меня все заработало. Это было намного сложнее, чем запуск простого Dockerfile, так как это был сайт, который изначально был разработан в 2002 году. Были модули, которые необходимо было загрузить и установить, разделы web.config, которые необходимо было разблокировать, и подключения к данным ODBC, которые нужно было сделать. Мой последний файл докеров выглядел так - надеюсь, он поможет следующему человеку!
# 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
Я не пробовал, но запустить классический ASP не должно быть проблемой. Образ microsoft/iis
основан на образе microsoft/windowsservercore
, который представляет собой полную установку Server Core и также включает 32-разрядную поддержку.
По умолчанию функция ASP отсутствует, поэтому ваш Dockerfile должен начинаться следующим образом:
# escape=`
FROM microsoft/iis
SHELL ["powershell", "-command"]
RUN Install-WindowsFeature Web-ASP
(Строки escape
и SHELL
упрощают создание файлов Docker, совместимых с Windows, см. Windows, Dockerfiles и обратная косая черта (обратная косая черта)).
Затем вы COPY
в папку своего приложения ASP и запустите остальную часть настройки IIS с помощью команд PowerShell. Этот вопрос имеет несколько хороших указателей и этот Dockerfile для ASP. NET показывает, как можно использовать PowerShell для настройки веб-сайтов.
Обновление Windows Server (с помощью Центра обновления Windows), на котором работает контейнер, в соответствии с версией образа контейнера очень важно. В противном случае возникнет множество проблем, которые сложно отследить.