![将 Docker 推向生产环境](https://linux22.com/image/658567/%E5%B0%86%20Docker%20%E6%8E%A8%E5%90%91%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83.png)
我在开发环境中使用 docker-compose,其中有一个docker-compose.yml
文件列出了我需要的所有容器。
另外,我还有一个集中的 git repo、Jenkins 服务器和另一台服务器,我将在其中保存暂存和生产数据。
所以问题是如何更好地组织部署过程。
现在git push
在 git 服务器端触发 Jenkins 构建作业。根据分支名称(暂存或生产),将触发不同的作业。
构建作业使用 docker-compose 来启动整个环境并运行测试。那么如何将新容器推送到暂存/生产环境?
一种方法是将它们推送到私有或公共 docker 注册表,但在生产中更新容器的最佳实践是什么? Jenkins 服务器是否应该只 ssh 并运行 raw 、 和kill
命令rm
?我没有看到相关示例。pull
run
答案1
Kubernetes、Docker Swarm 或 Rancher 可能是实现所谓滚动更新的最佳方式。
基本上,滚动更新将获取一组容器(称为服务)并逐一更新它们。假设您有三个容器运行您的应用程序,滚动更新将关闭第一个容器并更新它,依此类推,直到服务完全更新。这意味着您实际上可以获得应用程序的零停机时间,因为这些产品中的负载平衡器是智能的,不会重定向到更新容器。
此链接为您提供了 Swarm 运行服务然后更新它的基本实现。
对于一些最简单的设置和实施,根据我的经验,Rancher 是掌握所有这些概念的良好起点。它基本上是 Kubernetes 等不同 Docker 技术之上的接口。