Docker не копирует файлы, указанные в Dockerfile - PullRequest
0 голосов
/ 09 июля 2019

В настоящее время у меня работает хост 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 длясоздайте новый образ из контейнера после установки.Я буду держать это в курсе, что работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...