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?
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.