Aparently for Server Core 2019 you have to take base image and apply the desired language pack by yourself.
And, here you can see some tips about how to do it:
- Read Suport Link to understand the suggested approach to install languages over server core 2019
- Manually download ISO that contains the language packs here
- Manually mount the ISO image, in my case to:
D:\x64\langpacks
- Manually move pt-BR langpack
D:/x64/langpacks/Microsoft-Windows-Server-Language-Pack_x64_pt-br.cab
to current dockerfile dir - Create volume dir at host machine, in my case:
c:\shared_at_host
- We are good to go, take a look at
dockerfile
:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
COPY Microsoft-Windows-Server-Language-Pack_x64_pt-br.cab C:/temp/
RUN powershell -NoProfile -Command \
lpksetup.exe /i pt-BR /f /a /s /p C:\temp
RUN mkdir C:\shared_at_container
- Build it:
docker build -t wes-cloud2019 .
- Run container:
docker run --name wes-cloud2019 -d -v c:\shared_at_host:C:\shared_at_container -p 4000:80 wes-cloud2019
- Enter container using powershell:
docker exec -i wes-cloud2019 powershell
- Export event viewer
wevtutil epl System C:\shared_at_container\System.evtx /ow
wevtutil epl Application C:\shared_at_container\Application.evtx /ow
- Go back to your host, open host dir
c:\shared_at_host
, evtx and search for errors or anything suspicious
At this point, we can see intuitive steps to fix doesn't work. And nothing clear was found.. Maybe steps above could help MS to make it easier, or fix something..
Once I'm inside container, let's play and learn some tricks, take a look..
lpksetup.exe /i pt-BR /f /a /s /p C:\temp
- Export evtx again and take a look, maybe something new appears
(Get-WmiObject -Class Win32_OperatingSystem).MUILanguages
Following MS docs about How To Configure Internation Settings, the way to do it is using the International Windows PowerShell Cmdlets.
Set-WinUserLanguageList pt-BR -Force
Set-WinUILanguageOverride pt-BR
Set-WinSystemLocale pt-BR
Set-Culture pt-BR
Set-WinHomeLocation -GeoId 32
Well, it doesn't work in my case, specially because I'm forcing pt-BR
, but as far as I can see, pt-BR lang pack fails.. right?!
One thing annoying is the lack of feedback when running powershell inside container, there is no output, I'm missing something??
Let's try to read those settings:
Get-WinUserLanguageList
Get-WinUILanguageOverride
Get-WinSystemLocale
Get-Culture
Get-WinHomeLocation
WOW, some settings changed, another settings still same. The most important setting, in my case, is WinSystemLocale
.
wevtutil epl System C:\shared_at_container\System.evtx /ow
wevtutil epl Application C:\shared_at_container\Application.evtx /ow
wevtutil epl Microsoft-Windows-International-RegionalOptionsControlPanel/Operational C:\shared_at_container\international_01.evtx /ow
wevtutil epl Microsoft-Windows-International/Operational C:\shared_at_container\international_02.evtx /ow
Our IIS Application make a call to an legacy Win32 .exe process, that Win32 .exe deal with scripts, but scripts are being truncated on Server Core 2019, only when scripts have pt-BR chars like â, ã, é, ç,...
- It's fails running on ServerCore2019
- It's perfect fine when running on ServerCore2016, that's intriguing
I'm running Docker Desktop Community on Windows 10 Desktop
- Docker version: 18.09.0
- Windows 10 host version: 10.0.17763.195 - It's a Desktop, not a Server - pt-BR version
- Server Core 2016 version: 10.0.17134.469 - Running just fine
- Server Core 2019 version: 10.0.17763.134 - With language issue
Dockerfile is the same for both (2016 and 2019), except for base image:
- Server Core 2016:
FROM microsoft/aspnet:4.7.2-windowsservercore-1803
- Server Core 2019:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
I'm not sure, but "Language for non-Unicode programs" setting looks suspicious:
- Running container Server Core 2016, I think that it reads (the setting) from Windows host machine, which is pt-BR.
- Running container Server Core 2019 (probablly more isolated version) it's not readding from Windows host machine.
I came this far and all I have is a lot of questions: