Как использовать переменную env в команде Docker RUN в разделе "SHELL [" cmd "," / S "," / C "]" - PullRequest
0 голосов
/ 20 мая 2019

Если я использую env var "TEMP_DIR" в пути к файлу, как показано ниже:

"RUN $env:TEMP_DIR\BuildTools2017\vs_buildtools_2017.exe..."

или

 "RUN $TEMP_DIR\BuildTools2017\vs_buildtools_2017.exe..."

Тогда здание столкнется с ошибкой:

"Системе не удается найти указанный путь."

Почему? Как мне следует избегать использования в коде файла "C:\temp" в пути, спасибо.

Dockerfile для установки инструментов сборки для VS 2017:

FROM openjdk:8-jdk-windowsservercore

ARG version

ENV TEMP_DIR="c:/temp"

SHELL ["powershell","-NoProfile","-Command","$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; "]

# Create temp file for installers
RUN New-Item -ItemType Directory -Force -Path $env:TEMP_DIR;

# Install Visual Studio ultimate 2012
COPY ./VS2012_ultimate "c:/temp/VS2012_ultimate"
RUN \
    Start-Process -FilePath "$env:TEMP_DIR/VS2012_ultimate/vs_ultimate.exe" - ArgumentList '/passive', '/q', '/s', '/norestart', '/noweb', '/full',  -PassThru | Wait-Process;

# Install Blend.Sdk.WPF 4.0 & 4.5
COPY ./BlendSdk "$TEMP_DIR/BlendSdk"

RUN \
    Start-Process -FilePath "$env:TEMP_DIR/BlendSdk/BlendWPFSDK_en.msi" -ArgumentList '/passive', '/norestart' -PassThru | Wait-Process; \
    Start-Process -FilePath "$env:TEMP_DIR/BlendSdk/BlendWPFSDK.msi" -ArgumentList '/passive', '/norestart' -PassThru | Wait-Process;


# Install build tool for VS 2017
SHELL ["cmd", "/S", "/C"]

COPY ./BuildTools2017 "$TEMP_DIR/BuildTools2017"

RUN C:\temp\BuildTools2017\vs_buildtools_2017.exe --quiet --wait --norestart --nocache --noWeb --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.VCTools
 --add Microsoft.Net.Component.3.5.DeveloperTools --add Microsoft.VisualStudio.Component.Windows10SDK.17763

SHELL ["powershell", "-NoProfile", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; "]

1 Ответ

0 голосов
/ 20 мая 2019

Windows предоставляет %TEMP% переменную среды:

RUN %TEMP%\BuildTools2017\vs_buildtools_2017.exe --quiet --wait --norestart --nocache --noWeb --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.VCTools
...