Невозможно использовать Dockerfile при использовании плагина Jenkins CloudBees Docker Custom Build Environment.

Я попытался использовать «Сборка внутри контейнера докеров» с опцией «Сборка из 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

Заранее спасибо.


person wshichao    schedule 09.08.2015    source источник


Ответы (3)


Если вы сейчас находитесь в каталоге с Dockerfile, должно работать следующее:

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

Что эквивалентно:

$ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 .

В обоих случаях . указывает контекст сборки - набор каталогов и файлов, которые отправляются демону Docker. Использование . просто устанавливает его в текущий каталог. Поскольку файл Dockerfile находится в текущем каталоге, он будет отправлен демону.

Проблема в вашем примере в том, что он ищет файл Dockerfile по адресу /var/lib/jenkins/jobs/lumi/workspace/Dockerfile. Предположительно, файла Dockerfile нет, но он находится в вашем текущем каталоге. Поскольку демону Docker были отправлены только файлы в каталоге /var/lib/jenkins/jobs/lumi/workspace, у него нет вашего файла Docker для сборки.

Я понимаю, что это звучит немного странно. Пока это не станет более понятным, проще всего запускать свои сборки из каталога с Dockerfile, чтобы избежать подобных проблем.

(Кроме того, не помещайте файл Dockerfile в домашний каталог или папку «Загрузки», так как это приведет к долгому ожиданию, так как все данные будут отправлены демону).

person Adrian Mouat    schedule 09.08.2015

Я думаю, наконец получил ответ!

У меня была та же проблема, что и у вас сейчас, и это на самом деле очень глупо.

Я предполагаю, что вы отметили «построить внутри контейнера Docker» на странице конфигурации проекта. Вы также должны указать путь, по которому вы убедились, что Dockerfile находится внутри репозитория.

Вот в чем суть. Если внутри этого пути есть Dockerfile, поле для записи рядом с «Dockerfile» должно быть оставлено пустым. Я предполагаю, что это пространство состоит в использовании Dockerfile, который не находится внутри указанного пути. Без этого Jenkins будет предполагать, что ваш Dockerfile находится внутри указанного вами пространства, и не будет беспокоиться о любом другом месте.

Поскольку я новичок в StackOverflow, я пока не могу опубликовать снимок экрана. Но когда смогу, я позабочусь о том, чтобы она у вас была, чтобы мне было легче изложить свою точку зрения.

Я искренне надеюсь, что это поможет. На выходе у меня было такое же сообщение об ошибке, и теперь я могу без проблем создавать свои образы Docker.

person Michaël Tuambilangana    schedule 12.08.2015

Предполагая, что вы запускаете эту установку на ведомой машине Jenkins.

введите здесь описание изображения

$ {WORKSPACE} установит контекст докера. Это должно решить проблемы с вашим путем.

person Darshan Deshmukh    schedule 23.05.2017