2016-10-18 61 views

cevap

16

Sonunda çalışıyorum. Aslen 2002'de geliştirilen bir site olduğu için basit bir Dockerfile'ı çalıştırmaktan çok daha karmaşıktı. Kilidi açılması gereken web.config bölümleri ve yüklenmesi gereken modüller vardı. yapılmalıydı. Son docker dosyam böyle görünüyordu - umarım bir sonraki kişiye yardım eder!

# 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

Ben denemedim ama klasik ASP çalıştırmak için bir sorun olmamalı. microsoft/iis resmi, tam Sunucu Çekirdeği yüklemesi olan ve ayrıca 32 bit destek içeren microsoft/windowsservercore görüntüsünü temel alır. senin Dockerfile böyle başlamak zorunda diye

ASP özelliği, varsayılan olarak olmayacak:

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

(escape ve SHELL hatları sadece daha kolay Windows friendy Dockerfiles oluşturulmasını kolaylaştıracak şekilde, bakınız Windows, Dockerfiles and the Backtick Backslash Backlash).

Ardından ASP uygulama klasörünüzde COPY olmasını ve IIS kurulumunuzun geri kalanını PowerShell komutlarıyla çalıştırın. This question bazı iyi işaretçilere sahiptir ve this Dockerfile for an ASP.NET app web sitelerini yapılandırmak için PowerShell'i nasıl kullanabileceğinizi gösterir.

+0

Müthiş çalışıyorum ama yeni bir sorun isabet isteriz - windowsservercore görüntü liman işçisi göbek üzerindeki bozuk gibi görünüyor - iki makine ve iki ağlarda çalıştı ama başarılı indirmez :( –

+0

' ➜ liman işçisi microsoft çekin/windowsservercore kullanma varsayılan etiket: en son en son: microsoft Çekme/windowsservercore 9c7f9c7d9bc2: 9 saniye içinde yeniden denenecek de5064718b3f: 10 saniye ' ve sonunda "bilinmeyen blob" –

+0

pencereleri çalıştırmak sadece çünkü o Sanırım içinde yeniden denenecek konteynerler windows :( –