gpt4 book ai didi

docker - Azure Devops Pipeline - 在构建上下文中找不到文件

转载 作者:行者123 更新时间:2023-12-04 11:35:25 26 4
gpt4 key购买 nike

在 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

NOTES-在诊断模式下运行管道并且 .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 Core 解决方案,文件夹结构和项目如下:
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
这是 repo 结构 enter image description here

最佳答案

file not found错误的原因可能是Dockerfile的相对路径和 csproj是不同的。尝试设置 Dockerfile在解决方案的根源中应该可以解决您的错误。
您还需要添加 buildContextcsproj文件夹。
buildContext : 构建上下文的路径
此外,这里还有一个 case你可以引用。
COPY 失败的另一个可能原因:未指定源文件是工作区中存在 .dockerignore 文件
寻找 .dockerignore由于 docker 的 CLI(命令行界面),它会将上下文发送到 docker 守护进程以加载 .dockerignore 文件。
如果.dockerignore文件存在于上下文中,而不是可能有排除条目忽略构建目录

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

关于docker - Azure Devops Pipeline - 在构建上下文中找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67341403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com