【发布时间】:2021-02-28 20:42:36
【问题描述】:
我是 docker 新手,所以我想寻求帮助,为 .net 核心应用程序创建 Dockerfile。 该应用程序具有以下架构:
FarmHouse.Services.AuthenticationService
│ ├───FarmHouse.Services.AuthenticationService.Api
│ ├───FarmHouse.Services.AuthenticationService.Logic
│ └───Dockerfile
│
├───FarmHouse.Services.Common
│ └───FarmHouse.Services.Common.Models
│
└───FarmHouse.Services.EmailService
├───FarmHouse.Services.EmailService.Api
├───FarmHouse.Services.EmailService.Logic
└───Dockerfile
这三个项目(FarmHouse.Services.EmailService、FarmHouse.Services.Common 和 FarmHouse.Services.AuthenticationService)在同一个解决方案中,FarmHouse.Services.AuthenticationService 使用来自 Common 项目的对象,即 FarmHouse.Services.Common 是它的依赖项。
我希望其他服务也可以链接到 Common。我的 AuthenticationService 的 Dockerfile 如下所示:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY ./*.sln .
COPY ./FarmHouse.Services.AuthenticationService/FarmHouse.Services.AuthenticationService.Logic/FarmHouse.Services.AuthenticationService.Logic.csproj ./FarmHouse.Services.AuthenticationService.Logic/FarmHouse.Services.AuthenticationService.Logic.csproj
COPY ./FarmHouse.Services.AuthenticationService/FarmHouse.Services.AuthenticationService.Api/FarmHouse.Services.AuthenticationService.Api.csproj ./FarmHouse.Services.AuthenticationService.Api/FarmHouse.Services.AuthenticationService.Api.csproj
COPY ./FarmHouse.Services.Common/FarmHouse.Services.Common.Models/FarmHouse.Services.Common.Models.csproj ./FarmHouse.Services.Common.Models/FarmHouse.Services.Common.Models.csproj
RUN dotnet restore
# Copy everything else and build
COPY ./ ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "FarmHouse.Services.AuthenticationService.Api.dll"]
当我从父文件夹运行 docker build 时,我看到以下错误:
>docker build -t coreapp -f ./FarmHouse.Services.AuthenticationService/Dockerfile .
#14 1.643 /usr/share/dotnet/sdk/3.1.406/NuGet.targets(282,5): error MSB3202: The project file "/app/FarmHouse.Services.AuthenticationService/FarmHouse.Services.AuthenticationService.Api/FarmHouse.Services.AuthenticationService.Api.csproj" was not found. [/app/FarmHouseServices.sln]417050dbf1abf19fd7c8a7a0eb5d56150a 0.0s
#14 1.643 /usr/share/dotnet/sdk/3.1.406/NuGet.targets(282,5): error MSB3202: The project file "/app/FarmHouse.Services.AuthenticationService/FarmHouse.Services.AuthenticationService.Logic/FarmHouse.Services.AuthenticationService.Logic.csproj" was not found. [/app/FarmHouseServices.sln] 0.0s
#14 1.643 /usr/share/dotnet/sdk/3.1.406/NuGet.targets(282,5): error MSB3202: The project file "/app/FarmHouse.Services.Common/FarmHouse.Services.Common.Models/FarmHouse.Services.Common.Models.csproj" was not found. [/app/FarmHouseServices.sln]uthenticationService/FarmHouse.Services.AuthenticationService.Api/FarmHouse.Services.AuthenticationService.Api.csproj ./FarmHous 0.0s
#14 1.643 /usr/share/dotnet/sdk/3.1.406/NuGet.targets(282,5): error MSB3202: The project file "/app/FarmHouse.Services.EmailService/FarmHouse.Services.EmailService.Api/FarmHouse.Services.EmailService.Api.csproj" was not found. [/app/FarmHouseServices.sln] 1.0s
#14 1.643 /usr/share/dotnet/sdk/3.1.406/NuGet.targets(282,5): error MSB3202: The project file "/app/FarmHouse.Services.EmailService/FarmHouse.Services.EmailService.Logic/FarmHouse.Services.EmailService.Logic.csproj" was not found. [/app/FarmHouseServices.sln]
请建议在这种情况下如何修改 Dockerfile 或架构。 谢谢。
【问题讨论】:
标签: asp.net .net docker .net-core