无法使用 Jenkinsfile 构建 docker 镜像

时间:2021-05-31 17:25:22

标签: docker jenkins jenkins-pipeline jenkins-groovy

从此 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

1 个答案:

答案 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 构建映像。