我目前正在码头化一个具有3个服务的aspnetcore微服务应用程序。我想为每个服务创建一个dockerfile并使用docker-compose运行该文件,该文件已经成功实现。但是,每次我将{netnet应用程序}首先publish
放入文件夹,然后分别build
图像时,我都希望将构建文件植入dockerfile中。
我发现这个问题与我的问题asp.net core 2.0 - multiple projects solution docker file非常相似,但是区别在于每种服务,我引用了core.library
(它们共享在不同服务中使用的一些通用文件)。
/auth.service
/search.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
,但是由于我们无法将源复制到当前目录之外(docker表示),所以它不起作用。
我试图将common.library的项目依赖项的属性从复制为复制本地-> true,但是它不起作用。
任何帮助将不胜感激!