如何解决依赖多个文件的web应用程序的依赖性问题



在恢复依赖项docker构建时,如何解决未找到的问题?我有这个问题。我的文件结构如下。

请关注我的Dockerfile:

[解决方案]'xxxxx'(3个项目(|+--[xxxxx.Web]|||+-xxxxx。Web.cssproj(此项目保存Docker文件(|+--[xxxxx.xxxxxserver]|||+---xxxxx.xxxxserver.csproj|+--[xxxxx.xxxxxApi.Client]|+---xxxxx.xxxxApi.Client.csproj1.xxxxx。网页.csproj->API2.xxxxx.xxxxserver/xxxx.xxxxserver.csproj->标识服务器3.xxxxx.xxxxApi.Client/xxxx.xxxxApi.Client.csproj->xxxxApi.Client

Dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["xxxxx.Web.csproj", "./"]
COPY ["common.props", "./"]
RUN dotnet restore "xxxxx.Web.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "xxxxx.Web.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "xxxxx.Web.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "xxxxx.Web.dll"]

common.props:

<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Version>1.0.0</Version>
<NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
<AbpProjectType>app</AbpProjectType>
</PropertyGroup>
</Project>

在我看来,您复制文件的路径不对。您还需要复制*.sln文件。首先检查路径。

根据对问题的描述,在我看来,将Dockerfile制作成这样更正确:

首先,将Dockerfile与sln文件平齐。

试试这个

COPY *.sln .
COPY xxxxx.Web/*.csproj ./xxxxx.Web/
COPY xxxxx.xxxserver/*.csproj ./xxxxx.xxxserver/
COPY xxxxx.xxxxApi.Client/*.csproj ./xxxxx.xxxxApi.Client/
RUN dotnet restore
COPY . .
WORKDIR /app/xxxxx.Web
RUN dotnet publish -c release -o /app --no-restore

upd:如果您没有*.sln文件,只需将WORKDIR更改为您的启动项目,如下所示:

COPY xxxxx.Web/*.csproj ./xxxxx.Web/
COPY xxxxx.xxxserver/*.csproj ./xxxxx.xxxserver/
COPY xxxxx.xxxxApi.Client/*.csproj ./xxxxx.xxxxApi.Client/
WORKDIR /app/xxxxx.Web
RUN dotnet restore