【问题标题】:How to externalize the docker container file如何外部化 docker 容器文件
【发布时间】:2016-03-08 04:04:28
【问题描述】:

我正在从 jenkins 官方镜像构建一个自定义 docker 镜像。我想将 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 指令之前或之后将VOLUME /etc/maven 指令添加到dockerfile 中。没用。

我也试过chmod ugo+wx /srv/docker/maven,但都没有效果。

【问题讨论】:

    标签: java maven jenkins docker docker-compose


    【解决方案1】:

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

    由于 maven 用户设置会覆盖全局设置(请参阅https://maven.apache.org/settings.html),您可以尝试挂载用户设置文件夹。

    【讨论】:

    • 感谢您的回答。是否有将/etc/foo/barconfigration 文件外部化的常见做法? Docker 提供了管理容器数据的方式,我想知道如何以更灵活的方式以 dockerlize 方式解决这个问题。
    • 你需要的是data volume containers,见docs.docker.com/engine/userguide/containers/dockervolumes。然后可以将您的配置保存在可以保存和导出的数据卷容器中。
    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多