Windows Docker добавляет настраиваемые заголовки
Я пытаюсь добавить X-Forwarded-For
заголовок запроса к mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
Базовый образ Docker с использованием Add-WebConfigurationProperty
.
Мой Dockerfile выглядит так:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
ARG source
RUN Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/site[@name='Default Web Site']/logFile/customFields" -name "." -value "@{logFieldName='X-Forwarded-For';sourceName='X-FORWARDED-FOR';sourceType='RequestHeader'}"
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
Когда я запускаю сборку докеров, я получаю следующую ошибку
Sending build context to Docker daemon 4.096kB
Step 1/5 : FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
---> 30379ad7580b
Step 2/5 : ARG source
---> Using cache
---> 90c760c37d26
Step 3/5 : RUN Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/site[@name='Default Web Site']/logFile/customFields" -name "." -value @{logFieldName='X-Forwarded-For';sourceName='X-FORWARDED-FOR';sourceType='RequestHeader'}
---> Running in 4210cd6ae606
Add-WebConfigurationProperty : Expected an operator name (eg. 'and')
Input: get-config("MACHINE/WEBROOT/APPHOST")/system.applicationHost/sites/site[
@name=Default Web Site]/logFile/customFields
Position: 86
Length: 3
Fragment: Web
At line:1 char:76
+ ... yContinue'; Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APP ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-WebConfigurationProperty]
, ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.IIs.PowerShel
l.Provider.AddConfigurationPropertyCommand
The command 'powershell -Command $ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/site[@name='Default Web Site']/logFile/customFields" -name "." -value @{logFieldName='X-Forwarded-For';sourceName='X-FORWARDED-FOR';sourceType='RequestHeader'}' returned a non-zero code: 1
Dockerfile отлично работает без RUN Add-WebConfigurationProperty
. Если я построю его безRUN Add-WebConfigurationProperty
Я могу запустить контейнер и выполнить Add-WebConfigurationProperty
и убедитесь, что поле добавлено в файл журнала. Есть идеи, почему это не будет работать через Dockerfile.
1 ответ
Я также сталкивался с некоторыми проблемами выхода из Windows Dockerfiles, иногда я использую сценарий PowerShell для вещей, которые мне нужны.
В этом случае, поскольку я предполагаю, что вы просто хотите добавить поле, вы можете использовать:
-filter "system.applicationHost/sites/siteDefaults/logFile/customFields"
Надеюсь это поможет!
Спасибо!