В настоящее время у меня работает хост Windows Server 2019, и я пытаюсь установить Visual Studio Build Tools и SSDT на образ windowsservercore:lts2019
.Я могу выполнить успешную тихую установку обоих, если подключу каталог, когда запускаю контейнер с docker run -it -v <src>:<dst> image:tag powershell
и запускаю .exes с флагами quiet
, однако мне нужно, чтобы установленные файлы были доступны внутри контейнера, поэтому япытаясь сделать это установить в Dockerfile.Вот что у меня есть:
FROM mcr.microsoft.com/windows/servercore:ltsc2019
SHELL ["powershell.exe", "-ExecutionPolicy", "Bypass", "-Command"]
RUN (New-Object System.Net.WebClient).Downloadfile('http://javadl.oracle.com/webapps/download/AutoDL?BundleId=210285', 'C:\\jre-8u91-windows-x64.exe')
RUN Start-Process -filepath 'C:\\jre-8u91-windows-x64.exe' -passthru -wait -argumentlist "/s,INSTALLDIR=$env:JAVA_HOME,/L,install64.log"
RUN del 'C:\\jre-8u91-windows-x64.exe'
RUN $env:PATH = $env.JAVA_HOME + '\\bin;' + $env:PATH; \
[Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine);
COPY ./vs_setup.exe .
COPY ./SSDT-Setup-ENU.exe .
RUN vs_setup.exe -q --norestart --add Microsoft.VisualStudio.Product.Professional
RUN SSDT-Setup-ENU.exe /install installvssql:ssdt /quiet /wait /norestart
RUN SSDT-Setup-ENU.exe /install INSTALLALL /quiet /wait /norestart
CMD ["powershell.exe", "-nologo"]
Это говорит о том, что команды COPY были успешно выполнены, однако после запуска шага для запуска .exes, который я пытался скопировать, я получаю ошибку vs_setup.exe 'не является распознанным командлетом, функцией и т. д.
Я делаю docker run -it image:tag powershell
, я вижу, что C:\installs
существует, но он пуст.Файлы .exes, которые я пытаюсь скопировать, находятся на том же уровне каталогов, что и запускаемый Dockerfile.Есть ли способ скопировать и установить их в Dockerfile?
Редактировать:
Я обновил Dockerfile, чтобы показать, что Java не изменяет каталоги илиминимум не должен быть.Структура папок:
Directory: C:\projects
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/25/2019 3:13 PM 4291 Dockerfile
-a---- 6/27/2019 10:54 AM 1608400 SSDT-Setup-ENU.exe
-a---- 5/16/2019 3:20 PM 1286728 vs_setup.exe
Сколько бы я ни хотел, чтобы это работало, я думаю, что мне нужно будет смонтировать том и установить их вручную, затем использовать многоступенчатые сборки и docker commit
длясоздайте новый образ из контейнера после установки.Я буду держать это в курсе, что работает.