从此 https://www.jenkins.io/doc/book/pipeline/docker/ 我想传递 dockerfile 的特定路径。
$jenkins_home/workspace/<project>
下的目录结构
├── dockerfiles
├── hello
│ └── Dockerfile
├── Jenkinsfile
jenkinsfile 中的内容是这样的
stage('Build Image') {
steps {
script {
def dockerfile = "Dockerfile.${env.branchName}"
def dockerImage = docker.build("${imageName}" + ":" + "${imageTag}", "-f ${dockerfile} ./dockerfiles")
}
}
}
导致这个错误
+ docker build -t localhost:32000/hello:feature -f Dockerfile.hello ./dockerfiles
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /var/jenkins_home/workspace/simple_project/Dockerfile.hello: no such file or directory
答案 0 :(得分:0)
看起来 Dockerfile.hello
不在前面提到的特定路径中。
docker build -t localhost:32000/hello:feature -f Dockerfile.hello ./dockerfiles
如果您的 Dockerfile 在另一个目录 /folder 中,那么您需要明确指定目录:
因此,如果您在 Dockerfile
目录中有 "/dockerfiles/hello"
,您将从 Jenkinsfile 传递为:
def dockerImage= docker.build("${imageName}" + ":" + "${imageTag}", "./dockerfiles/hello")
从位于 ./dockerfiles/hello/Dockerfile 的 Dockerfile 构建映像。