답변

16

마침내이 모든 작업이 완료되었습니다. 단순한 Dockerfile을 실행하는 것보다 훨씬 복잡했습니다. 원래 Dockerfile은 2002 년에 개발 된 사이트 였으므로, 다운로드 및 설치해야하는 모듈, 잠금 해제해야하는 web.config 섹션 및 만들어야했다. 내 마지막 도커 파일은 다음과 같습니다. 다음 사람에게 도움이되기를 바랍니다.

# 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 이미지는 전체 Server Core 설치 인 microsoft/windowsservercore 이미지를 기반으로하며 32 비트 지원도 포함됩니다. 당신의 Dockerfile은 다음과 같이 시작해야하므로

ASP 기능은 기본적으로 존재하지 않습니다 :

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

합니다 (escapeSHELL 라인 그냥 쉽게 윈도우 friendy Dockerfiles을 구축 할 수 있도록 참조 Windows, Dockerfiles and the Backtick Backslash Backlash).

그러면 ASP 응용 프로그램 폴더에 COPY이되며 나머지 IIS 설치 프로그램은 PowerShell 명령으로 실행됩니다. This question에는 좋은 포인터가 있고 this Dockerfile for an ASP.NET app에는 PowerShell을 사용하여 웹 사이트를 구성하는 방법이 나와 있습니다.

+0

최고하려고하지만 새로운 문제 타격 싶어요 - windowsservercore 이미지 고정 표시기 허브 것은 손상된 것 같다 -이 기계와 두 네트워크에 시도했지만 성공적으로 다운로드하지 않습니다 :( –

+0

' ➜ 고정 표시기는 마이크로 소프트 당겨/windowsservercore 사용하여 기본 태그 : 최신 최신 : 마이크로 소프트에서 당기기/windowsservercore 9c7f9c7d9bc2 : 9 초 다시 시도 de5064718b3f : 십초' 결국 "알 덩어리는" –

+0

Windows를 실행 만 할 수 있기 때문에 그것의 추측에 다시 시도 컨테이너 Windows에서 :( –