.netcore2-dockerize多个项目解决方案(库)docker文件

时间:2019-03-26 05:15:37

标签: linux docker .net-core docker-compose dockerfile

我目前正在码头化一个具有3个服务的aspnetcore微服务应用程序。我想为每个服务创建一个dockerfile并使用docker-compose运行该文件,该文件已经成功实现。但是,每次我将{netnet应用程序}首先publish放入文件夹,然后分别build图像时,我都希望将构建文件植入dockerfile中。

我发现这个问题与我的问题asp.net core 2.0 - multiple projects solution docker file非常相似,但是区别在于每种服务,我引用了core.library(它们共享在不同服务中使用的一些通用文件)。

项目结构如下:

  • / root(包含.sln)
  • docker-compose
  • /auth.service

    • .csproj
    • dockerfile
  • /search.service

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

以下是auth.service中的dockerfile

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,但是由于我们无法将源复制到当前目录之外(docker表示),所以它不起作用。

我试图将common.library的项目依赖项的属性从复制为复制本地-> true,但是它不起作用。

任何帮助将不胜感激!

0 个答案:

没有答案