在后面的管道步骤中无法访问使用 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
.
目前正在使用 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
.