我有3个不同的Docker映像。我需要从Jenkins文件构建这些图像。我有带有单个Docker文件的Wildfly,Postgres,Virtuoso Docker映像。到目前为止,我正在使用以下命令来构建这些图像:
目录结构是Docker是根目录。
Docker->构建-> 1。 wildfly 2. postgres 3. virtuoso
在我的詹金斯文件中,我具有以下命令来构建图像:
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 build命令,而该命令应从virtuoso目录中运行。
我的问题是如何从Jenkins文件构建映像?
谢谢。
答案 0 :(得分:2)
解决此问题的最简单方法是在执行docker build
命令之前在脚本中输入适当的文件夹。
例如:
stage('Building test images') {
steps {
sh '''
cd $WORKSPACE/build/virtuoso
docker build -t virtuoso .
'''
}
}
答案 1 :(得分:1)
下面是答案:
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 .'
}
}
感谢您的帮助。