сборка dotnet с версией не работает в докере - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь собрать свое основное приложение .net с помощью Docker. И я хочу переопределить версию своего приложения во время сборки .Чтобы отобразить его где-нибудь позже во время выполнения.

У меня файл Docker выглядит следующим образом:

FROM microsoft/dotnet:2.2-sdk AS build-env
WORKDIR /src

RUN apt-get update && \
    apt-get install -y libgit2-dev && \
    ln -s /usr/lib/x86_64-linux-gnu/libgit2.so /lib/x86_64-linux-gnu/libgit2-15e1193.so

COPY ..

WORKDIR /src/API

RUN dotnet restore

RUN dotnet tool install -g GitVersion.Tool --version=5.0.0-beta1-72

RUN export PATH="$PATH:/root/.dotnet/tools" && \
    version="$(dotnet gitversion /output json /showvariable NuGetVersion)" && \
    dotnet build --no-restore /property:Version=$version  && \
    dotnet publish --output "/app" --no-build

FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app .
ENTRYPOINT ["dotnet", "API.dll"]

Когда я пробовал те же команды, что и в инструкциях RUN на моем компьютере с Windows - все в порядке.Я также попытался выполнить те же команды в WSL (Ubuntu 18), и это тоже нормально - У меня есть версия сборки из моей команды сборки. Но я не могу понять, почему она не работает внутри Docker.

Я также пытался удалить всю мою магию GitVersion и использовать только это:

FROM microsoft/dotnet:2.2-sdk AS build-env
WORKDIR /src

RUN apt-get update && \
    apt-get install -y libgit2-dev && \
    ln -s /usr/lib/x86_64-linux-gnu/libgit2.so /lib/x86_64-linux-gnu/libgit2-15e1193.so

COPY ..

WORKDIR /src/API

RUN dotnet restore

RUN dotnet build --no-restore /property:Version=1.1.1.0-beta1
RUN dotnet publish --output "/app" --no-build

FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app .
ENTRYPOINT ["dotnet", "API.dll"]

В любом случае, мои результаты такие же.

Я использую этот код для проверки:

public static void Main(string[] args)
{
    Console.WriteLine(typeof(Program).Assembly.GetName());
}

Каждый раз, когда моя сборка успешна, но у меня есть версия, определенная в файле .csproj без переопределения.

...