如何在映像中创建我可以在容器运行期间覆盖的默认文件?

时间:2017-03-20 17:44:24

标签: nginx docker

如何在容器运行期间使用-v选项(或其他)覆盖默认配置文件(我在构建期间复制到映像)?

详细信息:

想象我在Dockerfile中有以下指令:

COPY nginx.conf /etc/nginx/nginx.conf
VOLUME ["/etc/nginx/nginx.conf"]

我希望nginx使用复制的nginx.conf,如果没有指定(单个文件)卷 - 就像默认配置一样,总是在图像中。 如果我指定卷 - 容器将使用提供的配置文件而不是复制到图像。

所以主要的想法是拥有我可以覆盖的默认配置。

当然以下解决方案无效,并给出错误。但是你可能知道如何实现类似的行为?

1 个答案:

答案 0 :(得分:1)

如果您从VOLUME中移除Dockerfile部分,它应该有效。然后,您可以在运行容器时覆盖默认配置文件。

所以在你的Dockerfile中,只需输入:

COPY nginx.conf /etc/nginx/nginx.conf

然后,当您运行容器时,使用您的配置更改映射到本地文件:

docker run -v ./nginx.conf:/etc/nginx/nginx.conf:ro ...

这将允许您提供默认配置,但也可以让您在需要时覆盖它。