Python 如何使用Docker将当前的部署方法迁移到一种?

Python 如何使用Docker将当前的部署方法迁移到一种?,python,git,fabric,docker,Python,Git,Fabric,Docker,这将是一个长期的问题,所以要提前警告 短版本: 我们当前的部署系统使用Fabric和Git部署Python web应用程序和支持部件。该系统运行良好,但在花了2周的时间来扩展它之后,我意识到我实际上是在试图重新投资码头码头轮。因此,我决定重新考虑如何使用Docker。然而,在确定如何以及在何处将Docker网格化到当前工作流中时,我遇到了一些困难 长版本: 我目前正在开发一个web应用程序,它由Apache、Django后端、Flask前端、ElasticSearch部署和PostgreSQL数

这将是一个长期的问题,所以要提前警告

短版本:

我们当前的部署系统使用Fabric和Git部署Python web应用程序和支持部件。该系统运行良好,但在花了2周的时间来扩展它之后,我意识到我实际上是在试图重新投资码头码头轮。因此,我决定重新考虑如何使用Docker。然而,在确定如何以及在何处将Docker网格化到当前工作流中时,我遇到了一些困难

长版本:

我目前正在开发一个web应用程序,它由Apache、Django后端、Flask前端、ElasticSearch部署和PostgreSQL数据库组成。后端和前端通过Apache暴露于外部世界,并通过所述暴露相互通信

部署使用结构和Git。Git用于在Fabric管理配置和管理部署环境所涉及的所有任务时传递更改

目前的系统运行良好,足以满足基本使用要求。然而,随着我们增加了更多的开发人员,测试不同分支变得越来越棘手。这是因为每个部署环境(目前有2个,一个临时服务器和一个生产服务器)只能为整个应用程序的一个实例提供服务器。另一个困难在于确保每个开发人员都有正确的设置来正确运行应用程序

我花了两周时间改进部署的结构方面,取得了一些成功。不幸的是,这一成功打开了一个漏洞,因为我很快意识到,这将导致大量的附加开发,只是为了复制Docker已经在做的事情。因此,我决定退一步,谈谈如何集成Docker。不过,我在想办法上有点困难

目标:

保持部署像现在这样相对简单:此时部署 基本上只是让部署环境获取最新的更改,备份数据库,应用更改,确保应用程序配置正确,然后重新启动任何必要的服务

简化分支测试:如果我能告诉测试人员,测试分支A他们只需要浏览到A.x.y.z,分支B可以在B.x.y.z找到,那就太好了。我用Fabric做的工作为一个组件(前端)管理了这一点但是,在为其他组件处理结构文件时,我意识到事情有可能变得一团糟

允许开发人员在尽可能接近deploymeny env的环境中进行开发,而无需强制他们运行部署环境的镜像:部署环境非常适合部署,但并非每个人都希望在他们的dev box上运行Ubuntu,原因有很多。Docker在本地复制部署环境方面似乎有很大的潜力,而实际上并不这样做

问题部分:

我遇到的问题是,如何处理织物、Docker和Git

我应该部署包括应用程序在内的Docker完整映像,还是使用Docker简单地封装部署环境,然后将应用程序装载到Docker映像中

或者我应该尝试在Docker映像中复制当前进程吗

或者我应该提出一些新的流程,主要利用Docker并减少涉及的织物和Git的数量

不幸的是,似乎有很多潜在的方法,我真的不确定哪一个是推荐的,哪一个是坏主意


有谁能推荐一种部署方法,使我能够在不遇到重大问题的情况下实现目标?

因为您使用的是Git,所以每个开发人员都在处理一个特定的分支,对吗? 为每个分支生成docker映像(例如,推送之后)。您可以使用结构脚本生成/部署docker映像

同时向您的开发人员介绍。:)

您的目标是“部署”由单个开发人员进行测试的东西,还是部署通常可以访问的东西?我认为这两种情况会有不同的解决方案。