Dockerize ASP Classic на IIS

Microsoft вкладывает средства в запуск Docker в Windows с помощью Docker Desktop для Windows. Можно ли запустить устаревшее приложение ASP Classic в IIS через Docker? Как?

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


person Patrick Lee Scott    schedule 18.10.2016    source источник


Ответы (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
person Patrick Lee Scott    schedule 01.11.2016
comment
Ответ Элтона Стоунмана был действительно важен для того, чтобы направить меня в правильном направлении, поэтому не забудьте проверить и это ниже, чтобы лучше понять. - person Patrick Lee Scott; 08.10.2020
comment
Глупый вопрос, но как вы на самом деле развертываете это на машине с Windows, поддерживает ли он также ci / cd и живет ли SQL dB внутри контейнера докеров или снаружи? - person Umar.H; 03.01.2021
comment
CI / CD - это совершенно отдельный процесс - вы можете использовать Dockerfiles в процессах CI / CD, да. БД будет работать за пределами этого контейнера, возможно, в другом контейнере или на голом железе - это не относится к этому контейнеру. Что касается развертывания в Windows - запустите оркестратор вроде Kubernetes. Найдите документы на kube для windows и следите за ними. - person Patrick Lee Scott; 26.02.2021
comment
Спасибо, дружище, действительно очень помогли. - person Umar.H; 27.02.2021
comment
kubernetes.io/docs/setup/production-environment / windows / - person Patrick Lee Scott; 10.03.2021

Я не пробовал, но запустить классический 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 для настройки веб-сайтов.

person Elton Stoneman    schedule 18.10.2016
comment
Awesome хотел бы попробовать, но столкнулся с новой проблемой - образ windowsservercore на концентраторе докеров, кажется, поврежден - пробовал на двух машинах и двух сетях, но он не загружается успешно :( - person Patrick Lee Scott; 18.10.2016
comment
`Docker pull microsoft / windowsservercore Использование тега по умолчанию: latest latest: Получение из microsoft / windowsservercore 9c7f9c7d9bc2: повторная попытка через 9 секунд de5064718b3f: повторная попытка через 10 секунд` и в конечном итоге неизвестный blob - person Patrick Lee Scott; 18.10.2016
comment
Думаю, это потому, что вы можете запускать контейнеры Windows только на окнах :( - person Patrick Lee Scott; 18.10.2016
comment
Если вы используете Windows Server 2016, убедитесь, что у вас запущен Центр обновления Windows - в Windows 10 вы захотите участвовать в программе предварительной оценки. С последними версиями у меня нет проблем с хабом. - person Elton Stoneman; 18.10.2016

Обновление Windows Server (с помощью Центра обновления Windows), на котором работает контейнер, в соответствии с версией образа контейнера очень важно. В противном случае возникнет множество проблем, которые сложно отследить.

person anbu    schedule 24.02.2020