我有以下 Dockerfile:
FROM jenkins/jenkins:lts
SHELL ["/bin/bash", "-c"]
ENV PROJECT_NAME Jira
ENV PROJECT_GIT_URL some_link_to_repo
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
COPY custom-template.groovy /usr/share/jenkins/ref/init.groovy.d/
COPY ldap-config-template.groovy /usr/share/jenkins/ref/init.groovy.d/
COPY job-dsl-template.groovy /var/jenkins_home/dsl/
COPY id_rsa /tmp/
USER root
RUN apt-get update ;\
apt-get -y install gettext-base ;\
cat /var/jenkins_home/dsl/job-dsl-template.groovy | envsubst > /var/jenkins_home/dsl/job-dsl.groovy ;\
rm -v /var/jenkins_home/dsl/job-dsl-template.groovy
USER jenkins
#RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
里面安装了jenkins/jenkins:lts
一个卷。/var/jenkins_home
命令
cat /var/jenkins_home/dsl/job-dsl-template.groovy | envsubst > /var/jenkins_home/dsl/job-dsl.groovy ;\
和
rm -v /var/jenkins_home/dsl/job-dsl-template.groovy
看起来像是在构建期间执行的,但在那之后我没有看到对卷所做的更改/var/jenkins_home
。
文件
/var/jenkins_home/dsl/job-dsl.groovy
未创建
并/var/jenkins_home/dsl/job-dsl-template.groovy
没有被删除,为什么?
看起来在 docker image build on volume 期间所做的每一个更改都在构建后被遗忘了。
此行为是预期的,如stackexchange 上的此答案中所述。您拥有的选项是:
特别是对于 Jenkins,他们已经实现了自己的解决方案,该
/usr/share/jenkins/ref/
目录在第一次启动时被复制到 JENKINS_HOME。所以你的图片需要修改这个文件夹而不是/var/jenkins_home
直接修改文件夹。您将看到使用各种脚本(如install-plugins.sh
和)完成此操作jenkins-support
。