使用Docker从Django应用程序创build离线版本

我是Docker的一名新手,在进一步调查之前,我想断言它是适合我需求的工具。

这里的情况是:我必须开发一个Django应用程序,主要在线使用。 但有些用户有时需要离线使用这个应用程序。 然后,回到网上,他们将需要推动那里工作的主要应用程序。

Docker能否帮助我为这些用户提供完全在线的离线版本的在线应用程序(只有很less的工作)(从他们来说,不是我明显…)?

感谢您的答案。

Docker将帮助您脱机运行堆栈,因此可以帮助您pipe理所有环境部分,以完全相同的方式运行数据库,应用程序和代理服务器,因为它们处于联机状态 – 无论实际用户使用哪个操作系统。

这减less了你的工作,让应用程序运行在离线状态下运行,就像在windows,mac和linux上一样。

尽pipeDocker不会以任何方式帮助您pipe理数据库合并,文件系统合并或类似的事情。 如果2个用户离线更改相同的东西,然后尝试同步它,那么无论您是使用docker还是不使用,都会遇到麻烦。

对于那些数据库合并和文件合并,你需要不同的技术,可以与docker使用 – 没有。

简单的回答是,是的,Docker会帮忙的。

较长的答案是非常主观的,对于如何达到预期的结果,意见会有所不同。 例如,现在使用Virtualbox和Vagrant等虚拟化工具创build离线开发副本已经可行了。

所以我会先问自己以下的问题:

  1. 我通常在哪里部署我的应用程序在生产?
  2. 这个部署是否自动化和可重复?
  3. 我的应用程序的所有平台(和数据)依赖项都被捕获了吗?

对于所有问题,一个好的答案可以让你成为采用像Docker这样的新技术的好地方。 你只需要了解你现在正在做什么和你需要做什么之间的差异。 不幸的是,公司拥有我称之为“神奇构build服务器”的情况并不less见,它由一个通过向导创build,负责所有的软件版本:-(

假设最糟糕的是我的build议是使用虚拟机重复部署应用程序。 使用CAPS工具之一(Chef,Ansible,Puppet,Salt)来捕获安装服务器所需的所有步骤,换句话说,通过将您的基础架构捕获为代码,开始实践DevOps。 我强烈build议使用testing厨房将所有这些与本地开发者环境联系在一起。

假设(另一方面)你有能力采用像Docker这样的新技术,那么我会问自己一些非常类似的问题:

  1. 我在哪里打算在生产中运行我的docker应用程序?
  2. 什么编排技术将用于部署和pipe理Docker容器?
  3. 我将如何构build和存储每个应用程序版本的Docker镜像?

跳到答案我会build议现在最大和最容易的容器pipe理解决scheme: Kubernetes 。 它正在越来越多地被像Google和Azure这样的云提供为本地服务。 从历史上看,Kubernetes很难在本地运行,但现在随着minikube或minishift等工具的出现而变化。 我会停在那里。

总之,我希望我的长期咆哮对你的决策有一点好处。