首页 文章

使用Jenkins CloudBees Docker自定义构建环境插件时无法使用Dockerfile

提问于
浏览
4

我尝试使用"Build inside a docker container"与选项"Build from Dockerfile"按照此处的指南CloudBees Docker Custom Build Environment Plugin

我已将Dockerfile放在工作空间根目录下(/ var / lib / jenkins / jobs / lumi / workspace) . 然后当触发构建时,我得到以下错误 . 我认为它能够找到Dockerfile,但由于某种原因无法构建映像 .

Build Docker image from ./Dockerfile ...
$ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 --file Dockerfile /var/lib/jenkins/jobs/lumi/workspace
The Dockerfile (Dockerfile) must be within the build context (/var/lib/jenkins/jobs/lumi/workspace)
FATAL: Failed to build docker image from project Dockerfile
java.lang.RuntimeException: Failed to build docker image from project Dockerfile
    at com.cloudbees.jenkins.plugins.docker_build_env.Docker.buildImage(Docker.java:116)
    at com.cloudbees.jenkins.plugins.docker_build_env.DockerfileImageSelector.prepareDockerImage(DockerfileImageSelector.java:47)
    at com.cloudbees.jenkins.plugins.docker_build_env.DockerBuildWrapper.setUp(DockerBuildWrapper.java:126)
    at hudson.model.Build$BuildExecution.doRun(Build.java:156)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537)
    at hudson.model.Run.execute(Run.java:1741)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:381)
Finished: FAILURE

以下是Dockerfile内容:

FROM php:5.6.11-apache

提前致谢 .

3 回答

  • 0

    如果您当前位于Dockerfile目录中,则以下内容应该有效:

    $ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 --file Dockerfile .
    

    这相当于:

    $ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 .
    

    在这两种情况下, . 都指定构建上下文 - 发送到Docker守护程序的目录和文件集 . 使用 . 只需将其设置为当前目录 . 由于Dockerfile位于当前目录中,因此它将被发送到守护程序 .

    您的示例中的问题是它正在 /var/lib/jenkins/jobs/lumi/workspace/Dockerfile 处查找Dockerfile . 据推测,Dockerfile不存在,但在当前目录中 . 由于只有目录 /var/lib/jenkins/jobs/lumi/workspace 中的文件被发送到Docker守护程序,因此它没有构建Dockerfile .

    我意识到这听起来有点奇怪 . 在它更有意义之前,最简单的方法是从Dockerfile目录运行你的构建,以避免这样的问题 .

    (另外,不要将Dockerfile放在主目录或Downloads文件夹中,因为它会导致漫长的等待,因为所有数据都会发送到守护进程) .

  • 4

    我猜终于得到了答案!

    我刚刚遇到了和你现在一样的问题,实际上它非常愚蠢 .

    我假设您在项目配置页面中勾选了“在Docker容器内构建” . 您还必须指定一个路径,在该路径中确保Dockerfile位于存储库中 .

    这就是重点 . 如果此路径中有Dockerfile,则“Dockerfile”旁边的写入空间必须留空 . 我想这个空间在于使用不在指定路径内的Dockerfile . 如果没有这个,Jenkins会假设您的Dockerfile位于指定的空间内,并且不会考虑任何其他位置 .

    由于我是StackOverflow的新手,我还不能发布任何截图 . 但是当我可以的时候,我会确保你拥有它,这样我就可以更容易地说明我的观点 .

    我真诚地希望这会有所帮助 . 我在输出中有相同类型的错误消息,现在我可以毫无困难地构建我的Docker镜像 .

  • 0

    假设您在Jenkins从机上运行此设置 .

    enter image description here

    $ 将设置docker上下文 . 这应该可以解决您的路径问题 .

相关问题