Docker 文件当前工作 > 目录不包含项目或解决方案文件

use*_*862 3 .net docker .net-core

发出命令时:docker build -t honda-api:build .

步骤 7/10:运行 dotnet Restore ---> 在 beedd0465f48 MSBUILD 中运行:错误 MSB1003:指定项目或解决方案文件。当前工作目录不包含项目或解决方案文件。

文件夹结构如下所示

        Domain/
            Honda.Domain/
                Honda.Domain.csproj
        API/
            Honda.API/
                Honda.API.csproj
        Dockerfile
Run Code Online (Sandbox Code Playgroud)

Docker 文件内容

    FROM mcr.microsoft.com/dotnet/core/sdk:3.1 
    WORKDIR /home/app 
    COPY . . 
    COPY ./Domain/Honda.Domain/Honda.Domain.csproj Domain/
    COPY ./API/Honda.API/Honda.API.csproj API/
    
    RUN dotnet restore 
    RUN dotnet publish ./Honda.API.csproj -o /publish/ 
    WORKDIR /publish ENV ASPNETCORE_URLS=https://+:5001;http://+:5000 
    ENTRYPOINT ["dotnet", "Honda.API.dll"]
Run Code Online (Sandbox Code Playgroud)

edu*_*nio 6

如果您没有.sln在根级别复制对所有项目进行分组的文件,则需要运行dotnet restore每个项目目录或.csproj文件,即:

RUN dotnet restore ./API
RUN dotnet restore ./API/Honda.API.csproj
Run Code Online (Sandbox Code Playgroud)

但是,我不会遵循您的方法,复制遵循相同项目结构的所有内容,然后复制.csproj具有自定义文件的文件,最好保留所有内容,并遵循这种方法

像这样的东西(另外,可能使用运行时映像来运行应用程序,而不是 sdk 映像,并使用Release配置):

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /app 

# copy csproj and restore as distinct layers
COPY *.sln .
COPY ./Domain/Honda.Domain/*.csproj ./Domain/Honda.Domain/
COPY ./API/Honda.API/*.csproj ./API/Honda.API/
RUN dotnet restore

# copy everything else and build app
COPY . ./
WORKDIR /app/API/Honda.API
RUN dotnet publish -c Release -o publish 

FROM mcr.microsoft.com/dotnet/aspnet:3.1
WORKDIR /app
COPY --from=build /app/API/Honda.API/publish  ./
ENV ASPNETCORE_URLS=https://+:5001;http://+:5000 
ENTRYPOINT ["dotnet", "Honda.API.dll"]
Run Code Online (Sandbox Code Playgroud)

我还没有对此进行测试,但希望您可以对其进行调整并修复它存在的任何小问题。