我想避免连接到远程计算机来编辑 nginx conf 文件。
我宁愿通过 git 和 jenkins 来控制它。
以一种可以轻松测试和角色返回的方式管理我的 nginx 配置历史记录的最佳实践是什么?
谢谢!
您可以创建一个带有配置的卷并将其挂载到 nginx 容器中。当您需要更新配置时,只需替换卷中的文件(git、从主机复制文件等)并通过 docer exec 向 nginx 服务发送重新加载命令。 另外,您可以将带有 nginx 配置的主机目录挂载(只读)到容器中。
https://docs.docker.com/engine/userguide/containers/dockervolumes/
我喜欢接受的答案@komex,它很好,但要求您维护一个卷,并且不解决问题中所要求的测试生命周期和部署。此外,在我们确保文件正确并测试成功后,还应该使用文件构建卷。
这是我的进化食谱:-
版本控制
必须使用一些SCM,例如git。将您的配置保存在 git 存储库中。
测试
使用 CI/CD Jenkins 并使用 docker 通过配置文件从 nginx 构建镜像。您可能希望使用环境变量,而不是对配置上的任何 URL 进行硬编码,以便在测试设置中您可以指向虚拟值并运行单元测试。您的单元测试可能只是一堆卷发和预期的响应。经过测试,您可以轻松破坏此设置。
您的 CI 确保作业运行的所有内容都配置正确。
部署
现在您可以构建用于部署的卷。连接/分离您的卷。 但是你处于一个完整的 k8s 环境中,我只需从 ngnix 构建我的映像(就像上面 CI 中的测试作业一样)并部署 pod,甚至不需要卷或重新加载。
github 上有一个非常有趣的存储库,其中有足够的文档,可让您使用 API 监控和远程配置 nginx。