создать образ докера с файлом докера от jenkins

Меня заблокировали со вчерашнего дня, и мне нужна помощь. Я пытался использовать как jenkins docker-plugin, так и docker-plugin-step для создания образа докера из файла докера.

Однако, когда я пытаюсь запустить задание jenkins, оно дает мне следующее исключение:

Docker Build
Docker Build : build with tag jdubois/jhipster-docker:Gateway_Jenkins_V1 at path /home/javateam/DockerfileGateway
ERROR: Build step failed with exception
java.lang.NullPointerException: config was not specified
    at shaded.com.google.common.base.Preconditions.checkNotNull(Preconditions.java:226)
    at com.github.dockerjava.core.DockerClientImpl.<init>(DockerClientImpl.java:36)
    at com.github.dockerjava.core.DockerClientImpl.getInstance(DockerClientImpl.java:52)
    at com.github.dockerjava.core.DockerClientBuilder.getInstance(DockerClientBuilder.java:29)
    at com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher$Run$1.invoke(DockerBuilderPublisher.java:144)
    at com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher$Run$1.invoke(DockerBuilderPublisher.java:139)
    at hudson.FilePath.act(FilePath.java:991)
    at hudson.FilePath.act(FilePath.java:969)
    at com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher$Run.buildImage(DockerBuilderPublisher.java:139)
    at com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher$Run.run(DockerBuilderPublisher.java:89)
    at com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher.perform(DockerBuilderPublisher.java:180)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.build(MavenModuleSetBuild.java:915)
    at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:866)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537)
    at hudson.model.Run.execute(Run.java:1744)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:531)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:374)
Build step 'Build / Publish Docker Containers' marked build as failure
Finished: FAILURE

Ниже приведено содержимое dockerfile:

#Basic images for Gateway MS
FROM jdubois/jhipster-docker:Gateway_Jenkins_V1

#Fetch last Gateway MS version from gitlab and run it
RUN cd /home/jhipster/DockerJenkinsGateway && \
git pull origin master

# expose the working directory, the Tomcat port, the BrowserSync ports, the SSHD port, and run SSHD
VOLUME ["/jhipster"]
EXPOSE 8080 3000 3001 22
CMD    /usr/sbin/sshd -D

Что делаю не так??


person mootez    schedule 28.05.2015    source источник
comment
можешь показать свой Dockerfile? Без этого непросто догадаться.   -  person user2915097    schedule 28.05.2015
comment
#Основные образы для Gateway MS: FROM jdubois/jhipster-docker:Gateway_Jenkins_V1 #Получить последнюю версию Gateway MS из gitlab и запустить ее: RUN cd /home/jhipster/DockerJenkinsGateway && \ git pull origin master # открыть рабочий каталог, порт Tomcat, порты BrowserSync, порт SSHD и запустить SSHD: VOLUME ["/jhipster"] EXPOSE 8080 3000 3001 22 CMD /usr/sbin/sshd -D   -  person mootez    schedule 28.05.2015
comment
Когда люди запрашивают дополнительную информацию, пожалуйста, обновите свой вопрос, а не вставляйте его как комментарий, потому что, как вы можете видеть, комментарии не позволяют форматировать предварительно отформатированный текст, что делает его очень трудным для чтения (также возьмите минуту, чтобы прочитать документацию о правильном форматировании предварительно отформатированного текста — например, вашего файла докеров — в вопросе).   -  person larsks    schedule 28.05.2015
comment
это похоже на проблему конфигурации с плагином Jenkins. Базовая библиотека docker-java проверяет наличие DockerClientConfig, которое кажется нулевым. Это может быть даже отсутствующая конфигурация в вашем Maven pom.xml.   -  person gesellix    schedule 29.05.2015
comment
Нет никакой связи между конфигурацией dockerfile под jenkins и содержимым pom.xml!!! @gesellix   -  person mootez    schedule 31.05.2015
comment
Я добавил для вас содержимое dockerfile @larsks   -  person mootez    schedule 31.05.2015
comment
тем не менее, кажется, отсутствует DockerClientConfig... Я предлагаю проверить конфигурацию вашего плагина, см. wiki.jenkins-ci.org/display/JENKINS/ @mootez   -  person gesellix    schedule 31.05.2015


Ответы (2)


Другой вариант — использовать оболочку, предоставленную Jenkins, в качестве шага сборки и просто собрать образ Docker, используя аргументы командной строки, которые вы обычно используете в этом сценарии оболочки.

Это то, что мы делаем на нашем сервере сборки, и это дает нам детальный контроль над такими вещами, как управление версиями и то, какой образ/тег нужно отправить в Dockerhub.

person Alex Lynham    schedule 17.06.2015
comment
Спасибо за Ваш ответ. это только то, что я сделал. но сообщество jenkins должно разрабатывать плагины, выполняющие такие важные функции. - person mootez; 23.06.2015
comment
Да, насколько я понимаю, сложность заключается в том, чтобы протолкнуть большое количество тегов/знать, какие теги проталкивать, поэтому некоторые из них не работают так хорошо. Просто на моем ноутбуке я раньше вызывал ошибки, пытаясь нажать, скажем, десять тегов или около того. Может быть и что-то еще, но это то, что приходит на ум! - person Alex Lynham; 30.06.2015
comment
документы для этого плагина jenkins, в частности, абсолютно ужасны. одно из ключевых полей конфигурации (которое блокируется, если вы не заполните его правильно) имеет следующий полезный диалог, когда вы нажимаете значок справки: TODO: Docker REST API endpoint help - person Petrov; 17.09.2015
comment
@Petrov: ты когда-нибудь выяснял, как настроить это поле? - person Tim Ludwinski; 18.02.2016

Если вы используете Jenkins 2.0 или выше, Jenkins дает вам возможность построить конвейер как код, и вы можете легко интегрировать докер и его репозитории.

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

Дайте мне знать в случае более подробной информации.

person Mukul    schedule 20.04.2017