在后面的管道步骤中无法访问使用 Dockerfile 安装的依赖项。如何启用?

Dependencies installed with Dockerfile are inaccessible in later pipeline steps. How to enable?

目前正在使用 Jenkins Blue Ocean 尝试设置新管道。这是一个基于节点的项目,我在 Dockerfile 中 运行 npm install 成功,但是后来的管道步骤看不到已安装的 node_modules。这种行为很奇怪。

Jenkins 文件。

pipeline {
  agent {
    dockerfile {
      filename 'Dockerfile.prod'
    }
  }
  stages {
    stage('Test') {
      steps {
        sh 'ls node_modules'
      }
    }
  }
}

Dockerfile.prod

FROM node:8

ADD . /var/www    
WORKDIR /var/www
RUN ["npm", "install"]

在 Dockerfile 构建期间:

Step 4/4 : RUN ["npm", "install"]

 ---> Running in de3cd138a40e
...
added 1283 packages in 39.842s

Removing intermediate container de3cd138a40e

在 Jenkinsfile 的 test 阶段:

+ ls node_modules

ls: cannot access node_modules: No such file or directory

问题已解决。在 Jenkins 编译初始 dockerfile 之后,对于后面的管道步骤,它会正确启动它。但是,如果查看作业日志(不在 blueocean 视图中),可以看到 Jenkins 然后在启动容器 docker run -t -d -u 1000:1000 -w /var/jenkins_home/workspace/workspace_name 时覆盖了 WORKDIR。因此需要手动导航到预期的 WORKDIR.