首页 > 解决方案 > 解决方案 .NET 中 Docker 多个项目的问题

问题描述

这是我的文件夹的结构

ROOT FOLDER
    |--- Login.sln
    |--- Login.Api
        -- Login.WebApi.csproj
    |-- Domain
         -- Domain.csproj
    |-- BusinessLogic
        |-- BusinessLogic.csproj
    |---DataAccess
        |-- DataAccess.csproj
|-- BusinessLogic.csproj
    |---Dockerfile

这是我当前的 dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY . .

RUN dotnet restore "/Login/Login.WebApi.csproj"
WORKDIR "/src/."
COPY . .
RUN dotnet build "Login.WebApi.csproj" -c Release -o /app/build

FROM build as publish
RUN dotnet publish "Login.WebApi.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV ASPNETCORE_URLS http://*:PORT_NUMBER
ENTRYPOINT ["dotnet", "Login.WebApi.dll"]

现在无法正常工作,因为它无法进行还原。我不知道这是否是正确的方法

标签: c#asp.net.netdocker

解决方案


您无需进行还原;dotnet build无论如何都会这样做。另外,我建议您构建解决方案而不是单个项目。最后你不需要双引号。试试这个:

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY . .

RUN dotnet build Login.sln -c Release -o /app/build

FROM build as publish
RUN dotnet publish Login.Api/Login.Api.csproj -c Release -o /app/publish

我认为 dockerfile 的其余部分还可以。

还要仔细检查目录的名称,它们与您的文件夹结构不匹配。


推荐阅读