.netcore2 - dockerize файл Docker для нескольких проектов решений (библиотек) - PullRequest
0 голосов
/ 26 марта 2019

В настоящее время я занимаюсь докеризацией микросервисного приложения aspnetcore, которое имеет 3 сервиса.Я хотел бы создать dockerfile для каждого сервиса и использовать docker-compose для его запуска, который уже реализован.Тем не менее, каждый раз, когда я publish приложение dotnet помещаю в папку, а затем build изображение отдельно, мне нравится включать сборку в файл Docker.

Я обнаружил, что этот вопрос очень похож намой вопрос asp.net core 2.0 - файл Docker решения для нескольких проектов , но разница для каждого сервиса, я ссылаюсь на core.library (в котором есть общие файлы, которые используются в разных сервисах).

Структура проекта выглядит следующим образом:

  • / root (содержит .sln)
  • docker-compose
  • / auth.service

    • .csproj
    • dockerfile
  • / search.service

    • dockerfile
    • .csproj
  • / common.library
    • .csproj

Ниже приведен док-файл в auth.service

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY ["auth.service.csproj", "dotnetapp/"]
COPY ["Common.library.csproj", "Common.library/"]
RUN dotnet restore "auth.service.csproj"
COPY . .
WORKDIR "/src/auth.service"
RUN dotnet build "auth.service.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "auth.service.csproj" -c Release -o /app

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

Все работает хорошо, кроме линии COPY ["Common.library.csproj", "Common.library/"].Выдает ошибку, как , не может найти файл , который является правильным.Common.library.csproj не находится внутри каталога auth.service.

Затем я попытался переписать это в copy ../Common.library/Common.library.csproj, но так как мы не можем скопировать источник за пределы текущего каталога (так сказал докер), поэтомуэто не работает.

Я пытался изменить свойства проектных зависимостей common.library, чтобы скопировать local -> true, но это не работает.

Любая помощь будеточень ценю!

...