将作业目录从存储库中拖放到Dockerfile中的Jenkins中

我正在尝试创build一个Jenkins图像,该图像从包含一些预configuration作业的私有存储库中提取目录,并将这些作业显示在仪表板上。 我做了一个Dockerfile,将build立一个jenkins的图像,可以从我的私人回购拉到jenkins容器的目录。

但是,这些拉出的作业不会出现在/ var / jenkins_home / jobs中 ,因此Jenkins不会在仪表板上显示作业。

这是Dockerfile的一般内容:

FROM jenkins:latest ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false USER root RUN mkdir -p /var/jenkins_home/jobs/ WORKDIR /var/jenkins_home/jobs/ RUN "pull jobs directory from here" \ ls -lah; WORKDIR / USER jenkins 

当我拉出作业目录时,我只能将其拉入/ var ,而不是在/ var / jenkins_home // var / jenkins_home / jobs目录中。

我怀疑这个问题与Jenkins图像中创build目录的方式有关,其中/ var / jenkins_home目录在构build图像时被覆盖。

我有一个相关的post在这里检查,但我不想与图像文件夹绑定任何本地文件夹。 但是这个想法是密切相关的。

谢谢你的时间。

基础的Dockerfile通过这个指令将卷设置为/ var / jenkins_home:

 VOLUME /var/jenkins_home 

这会使该目录的行为与图像中的普通目录不同,导致您无法在Dockerfile中写入此目录,因为您试图在执行预configuration的作业时执行此操作。

这个问题在一个名为“Docker In-depth:Volumes”的文章中有更详细的描述,但是TLDR; 这是:

 FROM debian:jessie VOLUME /foo/bar RUN touch /foo/bar/baz # /foo/bar/baz doesn't exist