Docker сборка завершается неудачно, когда добавлена ​​ссылка на проект и фид Nuget - PullRequest
0 голосов
/ 09 февраля 2020

Я новичок в docker и пытаюсь создать docker изображение / контейнер на моей локальной машине. Это работает нормально, если у меня простой проект без какой-либо ссылки на проект и приватной ленты новостей. Я получаю указанные ниже ошибки, когда выполняю сборку docker (из папки src \ Account \ Account.host) после добавления ссылки на проект и частного фида Nuget.

  • Пропуск проекта "/ Shared / SharedComponent / SharedComponent.csproj ", так как он не был найден.
  • Ошибка NU1101: Невозможно найти пакет. В источнике (ах) нет пакетов с этим идентификатором: nuget.org

Я пытался изменить его, но получал копирование файлов из-за ошибок контекста. Мои вопросы: - возможно ли запустить docker build с приведенной ниже структурой папок? мне нужно использовать docker compose, если я хочу придерживаться той же структуры папок? - У меня есть другой проект, где мне нужно добавить еще один docker файл, но я просто тестирую один проект, который, кажется, не работает.

Структура папки проекта

  • Shared

    ++ SharedComponent

      +++ ShareComponent.csproj
    
      +++ Other files
    
  • Account

    ++ Account.Host

      +++ Account.Host.csproj (SharedComponent.csproj reference added)
    
      +++ Dockerfile
    
      +++ Other files
    

Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["Account.Host.csproj", "./"]

RUN dotnet restore "./Account.Host.csproj"
COPY . .
RUN dotnet build "Account.Host.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Account.Host.csproj" -c Release -o /app/publish

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

1 Ответ

0 голосов
/ 09 февраля 2020

Docker build должен иметь возможность видеть весь проект при сборке, чтобы он мог определить, изменился ли какой-либо из файлов (среди прочего).

Возможно, вам нужно запустить docker build из каталога root проекта и скажите ему, где находится Dockerfile, например:

docker build -t the_name_of_the_image -f Account/Account.Host/Dockerfile

Вышеприведенное может быть не совсем правильным, но размещенная вами структура каталога не соответствует сделать право: (

...