我目前正在运行 Windows Server 2019 主机,并且正在尝试在windowsservercore:lts2019
映像上安装 Visual Studio 构建工具和 SSDT。如果我在运行容器时挂载目录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 命令运行成功,但是一旦运行我尝试复制的 .exe 的步骤运行,我就会收到错误消息,即“vs_setup.exe”不是可识别的 cmdlet、函数等。
我做了一个docker run -it image:tag powershell
,我可以看到它C:\installs
存在但它是空的。我尝试复制的 .exe 与正在运行的 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
从安装后的容器中创建一个新映像。我会用有效的方法来更新这个。