簡體   English   中英

如何從 jenkinsfile 構建多個 docker 容器?

[英]How to build multiple docker containers from jenkinsfile?

我有 3 個不同的 Docker 圖像。 我需要從 Jenkins 文件構建這些圖像。 我有 Wildfly、Postgres、Virtuoso Docker 圖像和單獨的 Docker 文件。 到目前為止,我正在使用以下命令來構建這些圖像:

目錄結構為,Docker為根目錄。

碼頭工人->構建-> 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 ,我猜我正在從 $workspace 目錄運行 docker 構建命令,這個命令應該從 virtuoso 目錄運行。

我的問題是如何從 Jenkins 文件構建圖像?

提前致謝。

解決此問題的最簡單解決方案是在執行docker build命令之前在腳本中輸入正確的文件夾。 例如:

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

以下是答案:

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 .'
    }
}

謝謝你的協助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM