如何在容器运行期间使用-v选项(或其他)覆盖默认配置文件(我在构建期间复制到映像)?
详细信息:
想象我在Dockerfile中有以下指令:
COPY nginx.conf /etc/nginx/nginx.conf
VOLUME ["/etc/nginx/nginx.conf"]
我希望nginx使用复制的nginx.conf,如果没有指定(单个文件)卷 - 就像默认配置一样,总是在图像中。 如果我指定卷 - 容器将使用提供的配置文件而不是复制到图像。
所以主要的想法是拥有我可以覆盖的默认配置。
当然以下解决方案无效,并给出错误。但是你可能知道如何实现类似的行为?
答案 0 :(得分:1)
如果您从VOLUME
中移除Dockerfile
部分,它应该有效。然后,您可以在运行容器时覆盖默认配置文件。
所以在你的Dockerfile
中,只需输入:
COPY nginx.conf /etc/nginx/nginx.conf
然后,当您运行容器时,使用您的配置更改映射到本地文件:
docker run -v ./nginx.conf:/etc/nginx/nginx.conf:ro ...
这将允许您提供默认配置,但也可以让您在需要时覆盖它。