Добавление уровня сжатия в IIS в докере через powershell и appcmd завершается с ошибкой: неправильно сформированный индексатор коллекции

У меня есть WindowsServer в файле докера, где я пытаюсь включить сжатие на стороне сервера. Файл докера выглядит так

# escape=`
FROM  mcr.microsoft.com/windows/servercore:1803
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
LABEL cmbappname="cmbimage"
WORKDIR /inetpub/wwwroot
RUN Install-WindowsFeature -name Web-Server -IncludeManagementTools ;`
    Install-WindowsFeature -name Web-Dyn-Compression ;`
    Install-WindowsFeature -name Web-Basic-Auth ;`
    Install-WindowsFeature -name Web-Windows-Auth ;`
    Install-WindowsFeature -name Web-Net-Ext45 ;`
    Install-WindowsFeature -name Web-ISAPI-Ext ;`
    Install-WindowsFeature -name Web-WebSockets; `  
    Install-WindowsFeature -name Web-ISAPI-Filter ;`
    Install-WindowsFeature -name Web-WHC ;`
    Install-WindowsFeature NET-Framework-45-ASPNET ; `
    Install-WindowsFeature Web-Asp-Net45 ;`
    Install-WindowsFeature -Name Web-Mgmt-Service ;`
    Install-WindowsFeature -name Web-Mgmt-Tools ;`
    Install-WindowsFeature -name Web-Mgmt-Compat ;`
    Install-WindowsFeature -name Web-Scripting-Tools ;`
    Dism /online /enable-feature /featurename:IIS-ManagementService /all ;`
    dism /online /enable-feature /featurename:IIS-HttpCompressionDynamic ;`
    dism /online /enable-feature /all /featurename:iis-webserver /NoRestart ;
RUN New-item c:\test -ItemType "directory" 
RUN Invoke-WebRequest https://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi -OutFile C:\test\rewrite_amd64.msi
RUN Start-Process 'c:\test\rewrite_amd64.msi' '/qn' -PassThru | Wait-Process;
RUN dism /online /enable-feature /all /featurename:iis-webserver /NoRestart 
RUN Invoke-WebRequest https://download.microsoft.com/download/6/1/C/61CC0718-ED0E-4351-BC54-46495EBF5CC3/iiscompression_amd64.msi -OutFile C:\test\compression.msi
RUN Start-Process 'c:\test\compression.msi' '/qn' -PassThru | Wait-Process;
RUN & $env:windir\system32\inetsrv\appcmd set config -section:urlCompression /doDynamicCompression:true

RUN & $env:windir\system32\inetsrv\appcmd set config /section:system.webServer/httpCompression  "/scheme[name=gzip].staticCompressionLevel:9"

EXPOSE 443 
EXPOSE 80 

Файл докера строится просто отлично, пока

RUN & $env:windir\system32\inetsrv\appcmd set config /section:system.webServer/httpCompression  "/scheme[name=gzip].staticCompressionLevel:9"

в этой строке powershell выдает исключение

ОШИБКА ( сообщение: неправильно сформированный индексатор коллекции; формат: [@position,name='value',name2='value2',...]. Спецификатор @position является необязательным и может принимать значения '@start', '@end', или '@N', где N — числовой индекс в коллекции.) Команда 'powershell -Command $ErrorActionPreference = 'Stop'; $ProgressPreference = 'Продолжить молча'; & $env:windir\system32\inetsrv\appcmd set config /section:system.webServer/httpCompression /scheme[name=gzip].staticCompressionLevel:9' вернул ненулевой код: 1


person Arshad Badar Khan    schedule 28.07.2020    source источник


Ответы (1)


Вы можете попробовать добавить цитату вокруг gzip следующим образом:

appcmd set config /section:system.webServer/httpCompression  "/scheme[name='gzip'].staticCompressionLevel:9"
person samwu    schedule 29.07.2020