Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何外部化docker容器文件_Java_Maven_Jenkins_Docker_Docker Compose - Fatal编程技术网

Java 如何外部化docker容器文件

Java 如何外部化docker容器文件,java,maven,jenkins,docker,docker-compose,Java,Maven,Jenkins,Docker,Docker Compose,我正在从詹金斯的官方形象建立一个定制的码头工人形象。我想将maven安装到映像中,并将maven的配置文件外部化。但我失败了。容器启动后,有一个空的/etc/maven目录。我认为这可能是一个许可问题,但经过半天的研究,我无法解决它。 这是我的docker文件: FROM jenkins USER root RUN apt-get update && apt-get install -y maven 我当时在docker-compose.yml中尝试的是: jenkins:

我正在从詹金斯的官方形象建立一个定制的码头工人形象。我想将maven安装到映像中,并将maven的配置文件外部化。但我失败了。容器启动后,有一个空的
/etc/maven
目录。我认为这可能是一个许可问题,但经过半天的研究,我无法解决它。 这是我的docker文件:

FROM jenkins
USER root
RUN apt-get update && apt-get install -y maven
我当时在docker-compose.yml中尝试的是:

jenkins:
    build: /docker/jenkins/
    volumes:
        - /srv/docker/jenkins:/var/jenkins_home
        - /srv/docker/maven/conf:/etc/maven:rw # the rw flag has no effect!
        - /srv/docker/maven/repository/:/m2:rw
我尝试删除
/srv/docker/maven
目录,让容器在第一次运行时创建它

然后,我尝试在
RUN apt get update&&apt get install-y maven
指令之前或之后向dockerfile添加
VOLUME/etc/maven
指令。没用


我还尝试了
chmod ugo+wx/srv/docker/maven
,但都没有效果。

将主机文件夹装载到docker容器时,它会覆盖容器文件夹。由于maven配置文件是在映像构建期间创建的,但卷是在运行时装入的,所以卷将覆盖conf文件


由于maven用户设置会覆盖全局设置(请参阅),因此您可以尝试挂载用户设置文件夹。

谢谢您的回答。是否有将
/etc/foo/bar
配置文件外部化的常见做法?Docker给出了管理容器数据的方法,我想知道如何以dockerlize的方式解决这个问题,一种更灵活的方式。您需要的是
数据卷容器
,请参阅。然后,可以将配置保存在数据卷容器中,该容器可以保存和导出。