python – 使用Docker进行Web开发的适当工作流程
我今天开始学习Docker并且我已经能够在几个小时之后使用基于ubuntu:14.04的Python堆栈创建我的第一个自定义映像,通过试验Dockerfile构建和修改现有映像并使用提交保存它命令. 我的Dockerfile如下:
到目前为止这么好,但现在我想知道哪个应该是使用Docker进行Web开发的正确工作流程! 我使用Flask(docker hub,git source)尝试了Docker构建的示例应用程序,但我有几个问题…应用程序直接捆绑在Docker容器中,IMO不是一种可行的方法(至少在开发过程中!),因为每次我编辑应用程序代码时我都需要重建整个容器(对吧?). 我想要实现的是一个基本容器,具有特定的python安装和我的应用程序所需的所有第三方库(如数据库驱动程序等),并在此容器中动态注入我的应用程序(理想情况下通过git一次部署,但可能以其他方式在本地开发以加快速度). 那么使用Docker进行Web开发的正确方法是什么(或者……你是怎么做的)? (我在官方文档中没有找到任何关于这个主题的帮助,在线文章看起来太基础IMO …我想听听实际上使用Docker为他们的应用程序的人的真实世界的例子!:P) 最佳答案
我会建议你关于你的一些问题.
在您的情况下,您可以使用两个选项: >是的,你必须重建整个容器.更正确的是,您必须重建一个用于容器启动的图像.但Docker允许您使用图层逐步重建图像,这些图层就像一对一的切片一样.这允许您使用较少的磁盘空间,此操作将花费更少的时间(因为只有新的更改添加到图像). 优点:您的图像将完全可以发货 – 您可以准备它并在任何地方使用它 – 您需要的一切都捆绑在里面. 缺点:是的,您必须重建容器.在积极的开发过程中,您可能不那么舒适和灵活. >您可以从主机安装共享目录.我可能会建议你阅读这个guide,但我也会简要介绍一下它是如何工作的 – 你的本地目录(例如你的代码)将在你的容器内“可见”.应该使用该代码的应用程序将像使用“本地”代码一样使用它,因此您不必在每次代码更改后重建容器. 优点:是的,它可以加快您的开发过程 – 您可以立即在容器中测试您的代码. 缺点:这不是一个便携,可交付和通用的解决方案.如果您要在多个主机上使用该容器(例如,您有一个带Dev的流程 – >分段 – >生产环境),您将无法在这些主机上使用相同的捆绑容器hosts – 您还必须在该节点上提供代码,这些代码应该在容器内部使用. 总结一下上面描述的内容 – 如果你有无状态应用程序,你可以在经典(“捆绑”)情况下使用Docker容器 – 如果你要在其中实现任何静态更改 – 你将不得不重建源图像并重新启动容器. 如果您想运行一些有状态的应用程序,或者您想使用Docker容器存储一些数据(不要忘记,您不能将任何数据存储在容器本身中 – 它可能随时被杀死并重新启动,并且状态将恢复到原始映像状态!),您可以使用Docker中的共享卷,或者在这种情况下您将不得不拒绝使用Docker. Docker不是一个银弹 – 它在很多情况下非常有用,但是还有很多其他情况,你可以使用其他更方便的技术. PS.一个流程示例,我在之前的一个项目中使用过,我们必须使用负载平衡器,前端,后端和数据库应用程序构建一个复杂的基于Web的应用程序. PSS.对于整个流程,我可能还建议您使用一些容器管理工具,如Kubernetes,而不是纯粹的Docker用法. Kubernetes将为您提供管理容器间网络,在多个环境中部署容器和/或使用多个providers,对基于容器的应用程序进行负载平衡等的可能性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |