ответ

16

Я, наконец, получил все это. Это было намного сложнее, чем запуск простого файла Docker, поскольку это был сайт, который был первоначально разработан в 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 
2

Я не пробовал, но это не должно быть проблемой для запуска классический ASP. Изображение microsoft/iis основано на изображении microsoft/windowsservercore, которое представляет собой полную установку Server Core, а также включает 32-разрядную поддержку.

Функция ASP не будет там по умолчанию, так что ваш Dockerfile бы начать так:

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

(The escape и SHELL линии просто сделать его проще построить для Windows friendy Dockerfiles см Windows, Dockerfiles and the Backtick Backslash Backlash).

Тогда вы должны были бы указать COPY в своей папке ASP-приложения и запустить остальные настройки IIS с помощью команд PowerShell. This question имеет несколько хороших указателей, а this Dockerfile for an ASP.NET app показывает, как вы можете использовать PowerShell для настройки веб-сайтов.

+0

Удивительная хотелось бы попробовать, но попав в новую проблему - windowsservercore изображения на Docker ступицей, кажется, коррумпированные - пытался на две машины и две сети, но не удается успешно загрузить :( –

+0

' ➜ докер тянуть Microsoft/windowsservercore Использование тегов по умолчанию: последние последнее: Тяговая от Microsoft/windowsservercore 9c7f9c7d9bc2: Повторная попытка 9 секунд de5064718b3f: Повтор через 10 секунд ' и в конце концов«неизвестный блоб» –

+0

Guess это потому, что вы можете запускать окна только контейнеры на окнах :( –

Смежные вопросы