运行DockerFile在Azure上的DevOps构建命令时,未找到项目的依赖

问题描述 投票:0回答:1

这是通过VS2017产生的Dockerfile。我改变了一点点使用它在Azure上的DevOps

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["WebApi.csproj", "WebApi/"]
COPY ["./MyProject.Common/MyProject.Common.csproj", "MyProj.Common/"]
RUN dotnet restore "MyProject.WebApi/MyProject.WebApi.csproj"
COPY . .
WORKDIR "/src/MyProject.WebApi"
RUN dotnet build "MyProject.WebApi.csproj" -c Release -o /app

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProject.WebApi.dll"]

解决方案结构

MyProject.sln
   -MyProject.Common
     ...
   -MyProject.WebApi
       ...
       Dockerfile

我创建了Azure的下一个DevOps的构建流水线运行多克尔这些步骤建立:

  1. 获取源代码从Azure的回购Git的步骤
  2. 代理作业(托管Ubuntu的1604)
  3. 命令行脚本docker build -t WebApi .

我有这样的错误

2019-02-02T18:14:33.4984638Z  ---> 9af3faec3d9e
2019-02-02T18:14:33.4985440Z Step 7/17 : COPY ["./MyProject.Common/MyProject.Common.csproj", "MyProject.Common/"]
2019-02-02T18:14:33.4999594Z COPY failed: stat /var/lib/docker/tmp/docker-builder671248463/MyProject.Common/MyProject.Common.csproj: no such file or directory
2019-02-02T18:14:33.5327830Z ##[error]Bash exited with code '1'.
2019-02-02T18:14:33.5705235Z ##[section]Finishing: Command Line Script

附截图与工作目录使用enter image description here

我不明白,如果我必须要改变内Dockerfile或插入的DevOps控制台脚本一步东西

azure docker azure-devops dockerfile azure-pipelines
1个回答
1
投票

这仅仅是一种预感,但考虑您的Dockerfile位于下MyProject.WebApi,你想从MyProject.Common这是在同一水平上复制文件,那么你可能需要在运行时docker build以指定不同的上下文根目录:

docker build -t WebApi -f Dockerfile ../

当码头工人构建一个图像采集它的上下文 - 这是构建过程中获得,并且也被复制到图像文件的列表。

当您运行docker build -t WebApi .它运行MyProject.WebApi目录和目录.的所有文件(除非你有.dockerignore文件),这是在这种情况下MyProject.WebApi内,被纳入环境。但是MyProject.Common不是上下文的一部分,因此你不能复制的任何事情。

希望这可以帮助

编辑:也许你不不需要指定Working Directory(屏幕截图所示),那么该命令会变成:

docker build -t WebApi -f MyProject.WebApi/Dockerfile .

在这种情况下,泊坞窗将使用位于内Dockerfile MyProject.WebApi和包括属于溶液进入环境中的所有文件。

您还可以阅读关于在docker buildofficial documentation命令扩展描述上下文。

© www.soinside.com 2019 - 2024. All rights reserved.