Я пытаюсь запустить устаревшее приложение ASP.Net (.Net 4.7.1) из контейнера Windows. Одним из требований является установка системного языка, локали и местоположения на en-GB. Мне не разрешается трогать код, только web.config, если это абсолютно необходимо.
Рассматривается следующий подход:
- создание базового образа, содержащего все сертификаты, и примененный параметр культуры (требуется перезапуск)
- перезапустите базовый образ (с помощью перезапуска Windows или перезапуска контейнера, все, что работает)
- запустите базовый образ, чтобы убедиться, что настройки культуры применены правильно
- сохранить базовое изображение
- создать новое изображение, содержащее мое приложение, используя ранее сгенерированное базовое изображение
Dockerfile моего базового образа:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2
ARG site_root=.
WORKDIR /scripts
COPY scripts/ .
RUN powershell -f install-certificates.ps1
RUN powershell C:/Windows/System32/inetsrv/appcmd.exe set config /commit:WEBROOT /section:globalization /culture:en-GB
RUN powershell C:/Windows/System32/inetsrv/appcmd.exe set config /commit:WEBROOT /section:globalization /uiCulture:en-GB
RUN powershell Set-Culture en-GB
RUN powershell Set-WinSystemLocale en-GB
RUN powershell Set-WinHomeLocation -GeoId 242
RUN powershell Set-WinUserLanguageList en-GB -Force
Затем создайте и запустите контейнер.
docker build -t tmpaspnet .
docker run -it --name tmpcontainer --entrypoint powershell tmpaspnet
# inside the container
Restart-Computer
# container will exit, wait a few seconds
docker start tmpcontainer
docker exec tmpcontainer powershell Get-WinSystemLocale
# verify if system locale is correct set
# commit changes and save them to a new image
docker commit -m 'set system locale to en-GB' tmpcontainer myrepo/aspnet:latest
К сожалению, контейнер либо игнорирует перезапуск не полностью успешно. Когда я запускаю Get-WinSystemLocale
внутри контейнера, всегда возвращается «en-US».
TL, DR: Как правильно перезапустить контейнер Windows?
Я использую следующий контейнер mcr.microsoft.com/dotnet/framework/aspnet:4.7.2
Дополнительные примечания относительно сбоев при настройке языкового пакета https://github.com/sanguedemonstro/docker-playground/blob/master/langpack-on-servercore2019.md
Спасибо