Как собрать несколько Docker-контейнеров из jenkinsfile? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть 3 разных изображения Docker. Мне нужно построить эти изображения из файла Дженкинс. У меня есть изображения Wildfly, Postgres, Virtuoso Docker с отдельным файлом Docker. На данный момент я использую приведенную ниже команду для создания этих образов:

Структура каталогов: Docker является корневой директорией.

Docker-> build-> 1. wildfly 2. postgres 3. virtuoso

В моем файле jenkins ниже приведена команда для создания образа:

stage('Building test images')
{
   sh 'docker build -t virtuoso -f $WORKSPACE/build/virtuoso/Dockerfile .'
}

Но я получаю ошибку, как показано ниже:

Step 7/16 : COPY ./install $VIRT_HOME/install
COPY failed: stat /var/lib/docker/tmp/docker-builder636357036/install: no such file or directory
[Pipeline] }

Для справки ниже мой dockerfile:

FROM virtuoso:latest

ENV var1 /opt/virtuoso-opensource
ENV VIRT_db /opt/virtuoso-opensource/var/lib/virtuoso/db
ENV RUN_CONFIG=/opt/virtuoso-opensource/install/config

RUN export PATH=$PATH:/opt/virtuoso-opensource/bin

RUN mkdir $var1/install

COPY ./install $var1/install

WORKDIR $VIRT_db
CMD ["/opt/virtuoso-opensource/bin/init.sh"]

И рабочая область - / home / jenkins / Docker, и я предполагаю, что я запускаю команду сборки docker из каталога $ workspace, и эта команда должна запускаться из виртуозакаталог.

У меня вопрос, как построить образ из файла Jenkins?

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

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

самое простое решение для решения этой проблемы - ввести правильную папку в сценарии перед выполнением команды docker build. например:

stage('Building test images') {
  steps {
    sh '''
      cd $WORKSPACE/build/virtuoso
      docker build -t virtuoso .
    ''' 
  }
}
1 голос
/ 30 сентября 2019

Ниже приведен ответ:

stage('Build images'){
    echo "workspace directory is ${workspace}"
    dir ("$workspace/build/virtuoso")
    {
        sh 'docker build -t virtuoso -f $WORKSPACE/build/virtuoso/Dockerfile .'
    }
    dir ("$workspace/build/wildfly")
    {
        sh 'docker build -t wildfly -f $WORKSPACE/build/wildfly/Dockerfile .'
    }
    dir ("$workspace/build/postgres")
    {
        sh 'docker build -t postgres -f $WORKSPACE/build/postgres/Dockerfile .'
    }
}

Спасибо за помощь.

...