Я не могу использовать Docker ARG в моем DockerFile, особенно при создании проекта .net Core:
FROM microsoft/dotnet:2.2-sdk-nanoserver-1809 AS build
ARG target_configuration=Debug
WORKDIR /src
COPY MyProject/MyProject.csproj MyProject/
RUN dotnet restore MyProject/MyProject.csproj
COPY . .
WORKDIR /src/MyProject
RUN dotnet build --configuration $target_configuration --no-restore -o /app MyProject.csproj
'$ target_configuration' не подставляется,Я пробовал различные комбинации $ {xx}, "$ xx", "$ {xx}" и т. Д., Но я не выигрываю.FWIW, сообщение, которое я получаю в этом случае:
предупреждение MSB3052: неверный параметр компилятора, '/ define: $ TARGET_CONFIGURATION'
I'mизвестно об ограничении ARG, недоступных во время выполнения контейнера (и связанной с этим потребности в переменной ENV), а также о том, что ARG не доступен во время сборки, когда он определен ДО оператора FROM, однако они здесь не применимы (я считаю,).
Что я делаю не так?
Среда Docker:
Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.24)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:28:48 2019
OS/Arch: windows/amd64
Experimental: false
РЕДАКТИРОВАТЬ:
(TL; DR) Использовать% var% для образов Windows
Docker RUN запускается в указанном контейнере, что означает, что оболочка, в которой выполняется команда, влияет на то, как переменнаязамена сделана.Поэтому для контейнеров Windows используйте% var%
Этот поток в Docker-Forum имеет немного больше