Dockerize ASP Classic on IIS

后端 未结 3 1693
没有蜡笔的小新
没有蜡笔的小新 2021-01-30 11:22

Microsoft has been investing in running docker on windows with Docker Desktop for Windows. Is it possible to run a legacy ASP Classic application on IIS through

相关标签:
3条回答
  • 2021-01-30 12:08

    Updating the Windows Server (with Windows Update) where the container runs to match with the container image version is very important. Not doing so would raise all kinds of difficult to trace issues.

    0 讨论(0)
  • 2021-01-30 12:14

    I haven't tried, but it shouldn't be an issue to run classic ASP. The microsoft/iis image is based from the microsoft/windowsservercore image, which is a full Server Core install, and also includes 32-bit support.

    The ASP feature won't be there by default, so your Dockerfile would have to start like this:

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

    (The escape and SHELL lines just make it easier to build Windows-friendy Dockerfiles, see Windows, Dockerfiles and the Backtick Backslash Backlash).

    Then you would COPY in your ASP app folder, and run the rest of your IIS setup with PowerShell commands. This question has some good pointers, and this Dockerfile for an ASP.NET app shows how you can use PowerShell to configure websites.

    0 讨论(0)
  • 2021-01-30 12:17

    I finally got this all working. It was a lot more complex than running a simple Dockerfile, as it was a site that was originally developed in 2002. There were modules that had to be downloaded and installed, web.config sections that needed to be unlocked, and ODBC data connections that had to be made. My final docker file looked like this - hope it helps the next person!

    # 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
    
    0 讨论(0)
提交回复
热议问题