【发布时间】:2016-08-20 03:11:03
【问题描述】:
我想避免连接到远程机器来编辑 nginx conf 文件。
我宁愿从 git 和 jenkins 控制它。
以我可以轻松测试并恢复角色的方式管理我的 nginx 配置历史记录的最佳做法是什么?
- (git+docker+nginx可以解决吗?)
谢谢!
【问题讨论】:
标签: git nginx configuration docker
我想避免连接到远程机器来编辑 nginx conf 文件。
我宁愿从 git 和 jenkins 控制它。
以我可以轻松测试并恢复角色的方式管理我的 nginx 配置历史记录的最佳做法是什么?
谢谢!
【问题讨论】:
标签: git nginx configuration docker
您可以创建一个具有配置的卷并将其挂载到 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,甚至不需要卷或重新加载。
【讨论】: