Jenkinsfile自定义docker容器“无法findFROM指令”

我刚刚开始与Jenkinsfiles和Docker合作,所以如果这是明显的道歉。

我有一个包含一个Dockerfile和一个Jenkins文件的仓库。

Dockerfile只是通过添加一些依赖和构build工具来扩展一个基本的Ubuntu镜像(ubuntu:trusty)。

Jenkinsfile目前只为我构buildDocker容器:

node('docker') { stage "Prepare environment" checkout scm docker.build('build-image') } 

当我运行Jenkins构build时,输出日志显示Docker容器被成功创build,但是在它成功完成之前,我得到:

 Successfully built 04ba77c72c74 [Pipeline] dockerFingerprintFrom [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline [Bitbucket] Notifying commit build result [Bitbucket] Build result notified ERROR: could not find FROM instruction in /home/emackenzie/jenkins/workspace/001_test-project_PR-1-ROWUV6YLERZKDQWCAGJK5MQHNKY7RJRHC2TH4DNOZSEKE6PZB74A/Dockerfile Finished: FAILURE 

我一直无法find任何指导,为什么我从互联网上得到这个错误,所以任何帮助将不胜感激


Dockerfile:

 FROM ubuntu:trusty MAINTAINER Ed Mackenzie # setup apt repos RUN echo "deb http://archive.ubuntu.com/ubuntu/ trusty multiverse" >> /etc/apt/sources.list \ && echo "deb-src http://archive.ubuntu.com/ubuntu/ trusty multiverse" >> /etc/apt/sources.list \ && apt-get update # python RUN apt-get install -y python python-dev python-openssl 

这是因为您的FROM行使用空格而不是空格的选项卡。 这是Jenkins CI Docker工作stream程插件中的一个错误,该插件期望该行以FROM开头,后面跟着一个空格。

从Github上的jenkinsci / docker-workflow-plugin源代码:

 String fromImage = null; // ... other stuff if (line.startsWith("FROM ")) { fromImage = line.substring(5); break; } // ... other stuff ... if (fromImage == null) { throw new AbortException("could not find FROM instruction in " + dockerfile); } 

如果你使用空格而不是制表符,它应该可以正常工作。

我只是遇到了同样的问题,这是一个类似的解决scheme。 检查文件是否在文件开头用BOM编码(这可以用Notepad ++来完成)。 如果是这样,保存它没有标记,插件将停止抱怨。