在Docker中运行的Jenkins看不到的文件

时间:2017-03-22 15:23:38

标签: docker jenkins groovy

我创建了一个非常基本的Dockerfile,它包装了官方的Jenkins Docker镜像。我正在运行我的图像实例,并遇到了以下问题:

我启动了我的映像实例,并在我的实例中创建了一个名为tmp.txt的/ tmp目录(任何目录都可以工作)的文件。 我转到运行Jenkins实例的“脚本控制台”,在控制台中输入以下代码:

f = new File('/tmp/')
println f.list()

我希望看到一个文件列表,包括我新创建的/tmp/tmp.txt,但该文件不在列表中。这是阻止我的问题的象征,我想在Jenkins文件的groovy脚本上调用evaluate(),但是Jenkins看不到该文件不是脚本。

我的直觉是,这与Docker文件系统层有关。事实上,由于Jenkins安装在基本映像中较低的docker文件系统层,因此无法访问在其上方运行的实例层中创建的文件。这种行为似乎非常奇怪,但有些可以理解。 有没有人遇到过这个问题?如果是这样,你怎么能解决它?

FROM jenkins
ENV JAVA_OPTS="-Xmx8192m"
USER root
RUN mkdir /var/log/jenkins 
RUN chown -R  jenkins:jenkins /var/log/jenkins
RUN mkdir /var/cache/jenkins
RUN chown -R jenkins:jenkins /var/cache/jenkins
RUN useradd -ms /bin/bash jenkadm
USER jenkadm
WORKDIR /home/jenkadm
COPY id_rsa /home/jenkadm/.ssh/
COPY id_rsa.pub /home/jenkadm/.ssh/
USER root
RUN mkdir -p /opt/staples/ci-tools
RUN chown jenkadm:jenkadm /opt/staples/*
USER jenkins
ENV JENKINS_OPTS="--handlerCountMax=300 --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war"

0 个答案:

没有答案