【发布时间】:2017-05-23 08:24:51
【问题描述】:
我让 Jenkins 在 Docker 容器中运行。主目录位于主机卷中,以确保在对容器进行更新时保留构建历史记录。
我已经更新了容器,在主目录中创建了一个附加文件。拉新容器时,我看不到更改的文件。
ENV JENKINS_HOME=/var/jenkins_home
RUN mkdir -p ${JENKINS_HOME}/.m2
COPY settings.xml ${JENKINS_HOME}/.m2/settings.xml
RUN chown -R jenkins:jenkins ${JENKINS_HOME}/.m2
VOLUME ["/var/jenkins_home"]
我正在像这样运行容器:
docker run -v /host/directory:/var/jenkins_home -p 80:8080 jenkins
我之前运行过 Jenkins,因此主机上已经存在主目录。当我拉出新容器并运行它时,我看到文件.m2/settings.xml 没有创建。请问这是为什么?
【问题讨论】:
-
如果目录构建成功,您是否尝试过观察容器内部?你确定你正确地重建了容器吗?构建过程中是否有任何错误?例如由于目录不存在,无法复制文件?
-
docker build命令运行完成 ok;在构建过程中没有报告错误。你是什么意思观察容器内?我已经运行docker exec -it jenkins /bin/bash并看到容器内没有名为.m2的目录。 -
在没有变量目录名的情况下尝试 cp。运行 mkdir /.m2 复制 settings.xml /.m2/settings.xml
-
不,这没有帮助。但是,如果主机目录
/var/jenkins_home/.m2在运行容器之前存在,则在其中创建文件settings.xml。 -
好的,问题是如果主机目录被挂载到容器,那么容器的目录会被主机目录的内容覆盖。我刚刚发表的评论是错误的 - 我在容器内看到
settings.xml文件的原因是因为我使用了不正确的-v开关,这意味着卷没有正确安装,从而确保容器的settings.xml文件可见。
标签: docker