首页 > 解决方案 > 如何解决多依赖 Web 应用程序的依赖问题?

问题描述

如何在恢复依赖项 docker build 时解决未找到的问题?我得到了这个问题。我的文件结构如下所示。

请关注我的 Dockerfile:

[解决方案] 'xxxxx' (3 个项目)
  |
  +-- [xxxxx.Web]
  | |
  | +--- xxxxx.Web.csproj (这个项目包含 Docker 文件)
  |
  +-- [xxxx.xxxx 服务器]
  | |
  | +--- xxxxxx.xxxxserver.csproj
  |
  +-- [xxxxxx.xxxxApi.Client]
       |
       +--- xxxxx.xxxxApi.Client.csproj

 1. xxxxx.Web.csproj -> API
 2. xxxxx.xxxxserver/xxxxx.xxxxserver.csproj -> 身份服务器
 3. xxxxx.xxxxApi.Client/xxxxx.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>

标签: c#azuredockerdevops

解决方案


在我看来,您复制文件的路径错误。而且您还需要复制 * .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

推荐阅读