net framework asp docker asp-classic iis-7 docker-compose docker-for-windows

framework - Dockerize ASP Classic en IIS



docker.net framework (2)

Finalmente conseguí que todo funcionara. Era mucho más complejo que ejecutar un archivo Docker simple, ya que era un sitio que se desarrolló originalmente en 2002. Había módulos que tenían que descargarse e instalarse, secciones de web.config que debían desbloquearse y conexiones de datos ODBC que tenía que ser hecho. Mi último archivo docker se veía así: ¡espero que ayude a la próxima persona!

# 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

Microsoft ha estado invirtiendo en ejecutar Docker en Windows. ¿Es posible ejecutar una aplicación heredada ASP Classic en IIS a través de Docker? ¿Cómo?

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


No lo he intentado, pero no debería ser un problema ejecutar ASP clásico. La imagen de microsoft/iis se basa en la imagen de microsoft/windowsservercore , que es una instalación completa de Server Core, y también incluye soporte de 32 bits.

La función ASP no estará allí por defecto, por lo que su Dockerfile debería comenzar así:

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

(Las líneas de escape y SHELL solo facilitan la creación de archivos Docker compatibles con Windows, consulte Windows, Dockerfiles y Backlash Backlash Backlash ).

Luego COPY en su carpeta de aplicación ASP y ejecute el resto de su configuración de IIS con los comandos de PowerShell. Esta pregunta tiene algunos buenos consejos, y este Dockerfile para una aplicación ASP.NET muestra cómo puede usar PowerShell para configurar sitios web.