我想使用应用程序创建者提供的docker-compose文件在生产环境(单个主机)中部署docker应用程序。基于docker的解决方案被用作单片二进制安装程序的直接替代。
该应用程序附带默认配置,但期望管理员希望应用适当的配置更改。
似乎有几种方法可以将自定义配置应用于docker-compose.yml
文件中定义的服务,但是我不确定哪种方法被认为是最佳实践。我目前正在考虑的两个是:
将配置复制到新映像中。在这里,我将为docker-compose文件中定义的每个服务添加一个构建步骤,并创建一个最小的Dockerfile
,它使用COPY
用我的自定义配置文件替换映像中的现有配置文件。在sed
语句中使用echo
和CMD
也可以用来内联更改配置,而无需替换批发文件。
使用绑定配置并将其配置存储在主机上。在这种情况下,我会将所有自定义配置文件存储在主机上的目录中,并在docker-compose文件中的每个服务的volumes
参数中定义绑定安装。
第一种选择对我来说似乎是最干净的,因为该应用程序是完全独立的,但是如果我想进行任何进一步的配置更改,则需要重新构建映像。第二个选项似乎最简单,因为我可以即时更改配置(根据容器中的要求重新启动服务)。
是否存在将自定义配置注入Docker服务的推荐方法?
答案 0 :(得分:0)
鉴于您的情况,我认为使用绑定安装会更好。
一个Docker映像应该可以在不同的上下文中重用,并且仅针对特定配置(即环境)构建整个映像会破坏该目的:
Docker文档建议:
强烈建议您将VOLUME用于任何可变和/或 图片的用户可维修部分。
Good use cases for bind mounts
将配置文件从主机共享到容器。