Я пытаюсь создать образ Windows Docker, созданный из образа microsoft/wcf
. Служба WCF использует компонент COM, который установлен и зарегистрирован MSI от стороннего производителя.
Dockerfile:
FROM microsoft/wcf
WORKDIR C:/local
COPY SomeInstaller.exe ./
RUN ./SomeInstaller.exe /SP /VERYSILENT /SUPPRESSMSGBOXES /NOICONS
WORKDIR "C:/Program Files/SomeProgram/Interface"
RUN regsvr32 SomeProgramCOM.dll /s
WORKDIR C:/certs
COPY ./ops-certs .
RUN powershell "./Install-OpsCertificates.ps1"
Когда я строю это в своей локальной среде Windows 10, она работает правильно. Программа установки успешно завершает работу, файлы расположены в нужном месте, и регистрация COM проходит. Тем не менее, когда я запускаю это на нашем сервере сборки (обновление Windows Server 2016 1803), установщик не работает (не работает тихо), и COM-dll не регистрируется.
Разве выходные данные не должны быть одинаковыми при создании этого Dockerfile?
Построить вывод
Status: Downloaded newer image for microsoft/wcf:latest
---> e4b543a82489
Step 2/9 : WORKDIR C:/local
Removing intermediate container cf6b7d21b207
---> 5e943a9bd1be
Step 3/9 : COPY SomeProgram.exe ./
---> c1e0781fb180
Step 4/9 : RUN ./SomeProgram.exe /SP /VERYSILENT /SUPPRESSMSGBOXES /NOICONS
---> Running in 2cc2bb26cea4
Removing intermediate container 2cc2bb26cea4
---> 1ed4cbf280ad
Step 5/9 : WORKDIR "C:/Program Files/SomeProgram/Interface"
Removing intermediate container 9c5df9cc4cfd
---> 5387093d3311
Step 6/9 : RUN regsvr32 SomeProgramCOM.dll /s
---> Running in 66ddc85117fc
Removing intermediate container 66ddc85117fc
---> 453a43979c71
Step 7/9 : WORKDIR C:/certs
Removing intermediate container 03fefdeb069b
---> a42989c178fb
Step 8/9 : COPY ./ops-certs .
---> 4d60c35a7bab
Step 9/9 : RUN powershell "./Install-OpsCertificates.ps1"
---> Running in 8cecda9be47c
Scrip execution directory is C:\certs
Installing Certificates . . .
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
8C048578CA1E43CB577C2A64C3AD3101C64FAFC3 CN=MyCompany Root Certificate...
8C048578CA1E43CB577C2A64C3AD3101C64FAFC3 CN=MyCompany Root Certificate...
Import of Root certificate to Root Store Succeeded!!!!!!
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\CA
Thumbprint Subject
---------- -------
8C048578CA1E43CB577C2A64C3AD3101C64FAFC3 CN=MyCompany Root Certificate...
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
Thumbprint Subject
---------- -------
8C048578CA1E43CB577C2A64C3AD3101C64FAFC3 CN=MyCompany Root Certificate...
Import of Root certificate to CA Store Succeeded!!!!!!
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\CA
Thumbprint Subject
---------- -------
22A3E8B4AEC702987A2CBAEDD42573ED97E5BB53 CN=MyCompany Secure Certifica...
22A3E8B4AEC702987A2CBAEDD42573ED97E5BB53 CN=MyCompany Secure Certifica...
Import of Intermediate certificate to CA Store Succeeded!!!!!!
Removing intermediate container 8cecda9be47c
---> 73b2682580ce
Successfully built 73b2682580ce
Successfully tagged local/someprogram:latest
Также обратите внимание, что я запустил установщик SomeProgram на сервере Windows, и он работал правильно, поэтому не должно быть проблем с совместимостью.