У меня есть проект asp.net .net core 2.1, и мы используем Docker-контейнер, размещенный в Linux. Это работало хорошо. Теперь у нас есть требование установить версию ассемблера проекта при создании образа Docker с использованием файла Docker.
Итак, предположительно, я могу передать его как build-arg при сборке образа docker с помощью dockerfile. Но я не могу заставить его работать.
ARG MyVersion="0.0.1.0"
FROM microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1709 AS base
WORKDIR /app
EXPOSE 8081
FROM microsoft/dotnet:2.1-sdk-nanoserver-1709 AS build
WORKDIR /src
COPY source/MyApp/MyApp.csproj source/MyApp/
RUN dotnet restore source/MyApp/MyApp.csproj
COPY . .
WORKDIR /src/source/MyApp
RUN dotnet build MyApp.csproj /p:Version=$MyVersion -c Release -o /app
FROM build AS publish
RUN dotnet publish MyApp.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]
и соберите его с помощью команды
docker build --build-arg MyVersion=1.22.1.0 -t MyGoodApp -f MyApp.Dockerfile .
В Linux я получаю это сообщение
Задаче «GetAssemblyVersion» не было задано значение для требуемого
параметр "NuGetVersion"
В окнах
C: \ Program Files \ dotnet \ sdk \ 2.1.402 \ NuGet.targets (114,5):
ошибка: '$ MyVersion' не является допустимой строкой версии.
Вышеприведенная ошибка указывает, что $ MyVersion не передается / устанавливается неправильно в строке RUN dotnet publish MyApp.csproj / p: Version = $ MyVersion -c Release -o / app
Но я не вижу, что не так.
Пожалуйста, сообщите,