我有一个 jenkins 容器和一个由构建 docker 镜像组成的管道。我已经安装了必要的挂载(/var/run/docker.sock、/var/run),以便 jenkins 使用 docker 命令。我还将主机上的一个文件夹绑定到 jenkins 作为其工作区目录(/var/jenkins_home/workspace)。
下面是我的项目的一部分的 Dockerfile:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
RUN hostname && pwd
COPY /storage/admin/jenkins/workspace/tremplinx_master-NAUVRHOZ5IJBBHVQ54PTEZJJL33WO7NMFUYS5BF3C5H3LBCDC3XA/SPA/SPA.csproj SPA/SPA.csproj
RUN dotnet restore SPA/SPA.csproj
COPY . .
WORKDIR /src/SPA
RUN dotnet build SPA.csproj -c Release -o /app
运行我的管道失败并出现以下错误:
[tremplinx_master-NAUVRHOZ5IJBBHVQ54PTEZJJL33WO7NMFUYS5BF3C5H3LBCDC3XA] Running shell script
+ docker build -t spa:dev-0.0.1 SPA/
Sending build context to Docker daemon 4.536MB
Step 1/17 : FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
---> 625b44243fbe
Step 2/17 : WORKDIR /app
---> Using cache
---> 8279155deb77
Step 3/17 : EXPOSE 80
---> Using cache
---> 574345928687
Step 4/17 : FROM microsoft/dotnet:2.1-sdk AS build
---> f6d6062f4612
Step 5/17 : WORKDIR /src
---> Using cache
---> b49549e644ac
Step 6/17 : COPY /storage/admin/jenkins/workspace/tremplinx_master-NAUVRHOZ5IJBBHVQ54PTEZJJL33WO7NMFUYS5BF3C5H3LBCDC3XA/SPA/SPA.csproj SPA/SPA.csproj
COPY failed: stat /var/lib/docker/tmp/docker-builder969545350/storage/admin/jenkins/workspace/tremplinx_master-NAUVRHOZ5IJBBHVQ54PTEZJJL33WO7NMFUYS5BF3C5H3LBCDC3XA/SPA/SPA.csproj: no such file or directory
script returned exit code 1
我不明白为什么 docker 使用 /var/lib/docker/tmp/docker-builder969545350... 文件夹,而我已经指定了包含我的项目的完整路径。我是 Jenkins 的新手,所以如果我忘记指定重要信息,请原谅我。
谢谢。
答案1
我的问题已经解决了。我必须改变调用 Dockerfile 的方式并更改其中的 WORKDIR。