使用 Docker 从 Django 应用创建离线版本
Using Docker to create an offline version off a Django app
我是 Docker 的新手,在进行进一步调查之前,我想断言它是满足我需求的合适工具。
情况如下:
我必须开发一个主要用于在线的 Django 应用程序。但有些用户有时需要离线使用此应用程序。然后,重新联机后,他们需要将工作推送到主应用程序。
可以 Docker 帮助我为这些用户提供一个完全可用的离线版本的在线应用程序,只需很少的工作(来自他们,显然不是我...)?
感谢您的回答。
Docker 将帮助您 运行 离线堆栈,因此帮助处理所有环境部分,运行 数据库、应用程序、代理以完全相同的方式,因为它们在线 - 无论实际用户使用哪个 OS。
这减少了您让应用 运行 以完全相同的方式在线和离线使用的工作,无论是在 windows、mac 和 linux 上。
Docker 虽然不会以任何方式帮助您管理数据库合并、文件系统合并或类似的事情。如果 2 个用户离线更改相同的东西然后尝试同步它,你就有麻烦了,无论你使用 docker 还是不使用。
对于那些数据库合并和文件合并,您需要不同的技术,这些技术可以与 docker 一起使用,也可以不与
一起使用。
简短的回答是,是的,Docker 会有所帮助。
较长的答案是非常主观的,关于如何实现您想要的结果的意见会有所不同。例如,使用像 Virtualbox and Vagrant 这样的虚拟化工具创建离线开发副本已经有一段时间了。
所以我会先问自己以下问题:
- 在生产中我通常在哪里部署我的应用程序?
- 此部署是否自动化且可重复?
- 是否捕获了我应用程序的所有平台(和数据)依赖项?
所有问题的正确答案让您有机会采用 Docker 等新技术。您只需要了解您现在正在做的事情与您需要做的事情之间的差异。不幸的是......公司拥有我所说的 "magic build server" 并不少见,它由路过的向导创建,负责所有软件发布:-(
假设最坏的情况,我的建议是从使用虚拟机重复部署您的应用程序开始。使用其中一种 CAPS 工具(Chef、Ansible、Puppet、Salt)来捕获设置服务器所需的所有步骤,换句话说,通过捕获 infrastructure as code. I highly recommend using test kitchen 将所有这些连接到本地开发人员环境中,开始练习 DevOps .
假设(另一方面)您可以很好地采用 Docker 等新技术,那么,我会问自己一些非常相似的问题:
- 我打算在哪里 运行 我的 docker 应用程序投入生产?
- 将使用什么编排技术来部署和管理 Docker 容器?
- 我将如何构建和存储每个应用程序版本的 Docker 图像?
跳转到答案我会推荐目前最大和最糟糕的容器管理解决方案:Kubernetes. It is increasingly being provided as a native service by clouds like Google and Azure. Historically Kubernetes was hard to run it locally but that is now changing with the advent of tools like minikube or minishift。我就到此为止了。
总而言之,我希望我的长篇大论对您的决策有所帮助。
我是 Docker 的新手,在进行进一步调查之前,我想断言它是满足我需求的合适工具。
情况如下: 我必须开发一个主要用于在线的 Django 应用程序。但有些用户有时需要离线使用此应用程序。然后,重新联机后,他们需要将工作推送到主应用程序。
可以 Docker 帮助我为这些用户提供一个完全可用的离线版本的在线应用程序,只需很少的工作(来自他们,显然不是我...)?
感谢您的回答。
Docker 将帮助您 运行 离线堆栈,因此帮助处理所有环境部分,运行 数据库、应用程序、代理以完全相同的方式,因为它们在线 - 无论实际用户使用哪个 OS。
这减少了您让应用 运行 以完全相同的方式在线和离线使用的工作,无论是在 windows、mac 和 linux 上。
Docker 虽然不会以任何方式帮助您管理数据库合并、文件系统合并或类似的事情。如果 2 个用户离线更改相同的东西然后尝试同步它,你就有麻烦了,无论你使用 docker 还是不使用。
对于那些数据库合并和文件合并,您需要不同的技术,这些技术可以与 docker 一起使用,也可以不与
一起使用。简短的回答是,是的,Docker 会有所帮助。
较长的答案是非常主观的,关于如何实现您想要的结果的意见会有所不同。例如,使用像 Virtualbox and Vagrant 这样的虚拟化工具创建离线开发副本已经有一段时间了。
所以我会先问自己以下问题:
- 在生产中我通常在哪里部署我的应用程序?
- 此部署是否自动化且可重复?
- 是否捕获了我应用程序的所有平台(和数据)依赖项?
所有问题的正确答案让您有机会采用 Docker 等新技术。您只需要了解您现在正在做的事情与您需要做的事情之间的差异。不幸的是......公司拥有我所说的 "magic build server" 并不少见,它由路过的向导创建,负责所有软件发布:-(
假设最坏的情况,我的建议是从使用虚拟机重复部署您的应用程序开始。使用其中一种 CAPS 工具(Chef、Ansible、Puppet、Salt)来捕获设置服务器所需的所有步骤,换句话说,通过捕获 infrastructure as code. I highly recommend using test kitchen 将所有这些连接到本地开发人员环境中,开始练习 DevOps .
假设(另一方面)您可以很好地采用 Docker 等新技术,那么,我会问自己一些非常相似的问题:
- 我打算在哪里 运行 我的 docker 应用程序投入生产?
- 将使用什么编排技术来部署和管理 Docker 容器?
- 我将如何构建和存储每个应用程序版本的 Docker 图像?
跳转到答案我会推荐目前最大和最糟糕的容器管理解决方案:Kubernetes. It is increasingly being provided as a native service by clouds like Google and Azure. Historically Kubernetes was hard to run it locally but that is now changing with the advent of tools like minikube or minishift。我就到此为止了。
总而言之,我希望我的长篇大论对您的决策有所帮助。