Как создать образ докера с помощью фида Azure Artifacts в основном проекте .Net - PullRequest
0 голосов
/ 24 сентября 2019

У меня возникла проблема при создании образа докера в моем приложении .Net core web api.Вот изображение Docker, сгенерированное поддержкой VS Docker:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["src/appname.Api/appname.Api.csproj", "src/appname.Api/"]
COPY ["src/appname.Data/appname.Data.csproj", "src/appname.Data/"]
COPY ["src/Eappname.Models/appname.Models.csproj", "src/appname.Models/"]
RUN dotnet restore "src/appname.Api/appname.Api.csproj"
COPY . .
WORKDIR "/src/src/appname.Api"
RUN dotnet build "appname.Api.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "appname.Api.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "appname.Api.dll"]

К сожалению, я использую пакет Azure Artifacts Feed внутри своего приложения, и это изображение не работает.Я провел небольшое исследование и попытался использовать провайдер учетных данных с конфигурационным файлом nuget.Как показано ниже:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src

COPY NuGet.Config ./
COPY ["src/appname.Api/appname.Api.csproj", "src/appname.Api/"]
COPY ["src/appname.Data/appname.Data.csproj", "src/appname.Data/"]
COPY ["src/appname.Models/appname.Models.csproj", "src/appname.Models/"]

RUN dotnet restore --configfile NuGet.Config "src/appname.Api/appname.Api.csproj"

COPY . .
WORKDIR "/src/src/appname.Api"
RUN dotnet build "appname.Api.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "appname.Api.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "appname.Api.dll"]

, а также добавлен Nuget.Config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="BredasVSTS" value="https://pkgs.dev.azure.com/feed/nuget/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <BredasVSTS>
      <add key="Username" value="<usernameWithEmail>" />      
      <add key="ClearTextPassword" value="<token>" />
    </BredasVSTS>
  </packageSourceCredentials>
</configuration>

Теперь я немного продвинулся, потому что смог пройти шаг 11 - восстановление dotnet.К сожалению, на шаге 14 - сборка dotnet я получаю следующую ошибку: /bin/sh: 2: cd: can't cd to *Undefined*

enter image description here

Есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 25 сентября 2019

ошибка: / bin / sh: 2: cd: не может cd to Undefined

В соответствии с ошибкой MSB3073: The command "cd "undefined"", кажется, что выиспользуя командную строку или событие сборки cd $(SolutionDir) в вашем xxx.Api проекте.

При создании файла проекта .csproj без файла решения .sln с помощью dockerfile ему не удалось получить значение $(SolutionDir), основанное на файле .sln.

Итак, , вы получите ошибку "cd" undefined ", чтобы решить эту проблему, вы можете попробовать заменить все $(SolutionDir) на $(ProjectDir)..\ в вашем файле проекта .

В качестве теста я создаю пример с событием сборки:

CD $(SolutionDir)

Затем я получил ту же ошибку:

enter image description here

Чтобы решить эту проблему, я заменил $(SolutionDir) на $(ProjectDir)..\, затем собрал его, он отлично работает:

enter image description here

Проверьте эта тема для более подробной информации.

Надеюсь, это поможет.

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