Docker Azure Devops管道-在生成上下文中找不到文件

Docker Azure Devops管道-在生成上下文中找不到文件,docker,azure-devops,azure-devops-pipelines,Docker,Azure Devops,Azure Devops Pipelines,在Azure DevOps管道中获取错误: Step 7/17 : COPY ["demo6/demo6.csproj", "demo6/"] COPY failed: file not found in build context or excluded by .dockerignore: stat demo6/demo6.csproj: file does not exist 注意:在诊断模式下运行管道,并且.sln文件存在 ##[debug]cw

在Azure DevOps管道中获取错误:

Step 7/17 : COPY ["demo6/demo6.csproj", "demo6/"]
COPY failed: file not found in build context or excluded by .dockerignore: stat demo6/demo6.csproj: file does not exist

注意:在诊断模式下运行管道,并且.sln文件存在

##[debug]cwd=/home/vsts/work/1/s
##[debug]  /home/vsts/work/1/s/demo6.sln (file)
##[debug]  /home/vsts/work/1/s/demo6/demo6.csproj (file)
我有一个多项目Asp.Net核心解决方案,文件夹结构和项目如下:

demo6
 |--demo6/demo6.csproj
 |--demo6.api/demo6.api.csproj
该应用程序是demo6,它引用了demo6.api,这是一个类库

这在GitHub中的存储库demo6中。我修改了自动生成的Dockerfile,添加了额外的demo6/以查看这是否有效,但没有

谢谢你的帮助

Dockerfile如下:

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["demo6/demo6.csproj", "demo6/"]
RUN dotnet restore "demo6/demo6.csproj"
COPY . .
WORKDIR "/src/demo6"
RUN dotnet build "demo6.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "demo6.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "demo6.dll"]
我也试过:

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["demo6/demo6/demo6.csproj", "ddemo6/"]
RUN dotnet restore "ddemo6/demo6.csproj"
COPY . .
WORKDIR "/src/ddemo6"
RUN dotnet build "demo6.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "demo6.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "demo6.dll"]
出现以下错误:

Step 7/17 : COPY ["demo6/demo6/demo6.csproj", "ddemo6/"]
COPY failed: file not found in build context or excluded by .dockerignore: stat demo6/demo6/demo6.csproj: file does not exist
##[error]COPY failed: file not found in build context or excluded by .dockerignore: stat demo6/demo6/demo6.csproj: file does not exist
这是回购结构

文件未找到错误的原因可能是
Dockerfile
csproj
的相对路径不同。尝试在解决方案的根目录中设置
Dockerfile
,这样可以解决您的错误

您还需要在
csproj
文件夹中添加
buildContext

:生成上下文的路径

另外,这里有一个你可以参考的例子

复制失败的另一个可能原因是:未指定源文件。DockerRigNore文件存在于您的工作区中

查找
.dockerginore
文件,因为docker的CLI(命令行界面)将上下文发送到docker守护进程以加载.dockerginore文件

如果上下文中存在
.dockrignore
文件,则可能存在忽略生成目录的排除条目

# ignore or exclude build directory
*/build*
*/*/build*

docker build在本地测试时是否正常运行?按照您编写文件树的方式,从根目录开始,路径将是
demo6/demo6/demo6.csproj
是的,在我将其放在github上之后,它就工作了,创建了pipeline@khuynh,是的,我也试过了,但没有成功。根据错误信息,hi@Kumar,似乎在路径
demo6/demo6.csproj
上找不到该文件,您能在此处共享回购结构的屏幕截图吗?谢谢