DockerFile: передача ARG в сборку dotnet для сборки конфигурации - PullRequest
2 голосов
/ 16 апреля 2019

Я не могу использовать 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 имеет немного больше

1 Ответ

2 голосов
/ 16 апреля 2019

он, вероятно, работает как exe, поэтому попробуйте использовать его как exe env

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