【观点】将Docker用作本地开发毫无意义

【观点】将Docker用作本地开发毫无意义

作者:翻译:Andrew 2015-09-14 09:34:37

云计算 我一直在尝试使用Docker作为本地开发环境,最近我又尝试了一遍,结果发现依然行不通。但是这次尝试我得出了进一步的结论,那就是对于大多数的开发堆栈而言,将Docker作为本地开发环境毫无意义,除了引入更多的复杂性外,几乎没有任何优势。

依托Docker运行的后端服务(如数据库,缓存,存储等)感觉相当***,但对于编译语言,Docker却并未本地开发的理想之选。

我一直在尝试使用Docker作为本地开发环境,最近我又尝试了一遍,结果发现依然行不通。但是这次尝试我得出了进一步的结论,那就是对于大多数的开发堆栈而言,将Docker作为本地开发环境毫无意义,除了引入更多的复杂性外,几乎没有任何优势。

若要实现高效的代码编写、编译、运行周期,意味着本地开发环境的容器没必要和生产环境的容器保持一致。这等于是否定了容器最重要的优势之一。换句话说,基于容器的开发环境根本无法达到非容器的本地开发环境的高效和流畅。

先看看我的要求,一个高效的coding、编译和运行周期需要单独的“非生产环境”的容器。首先,如果将生产环境的容器用于开发环境,容器必须包含某些预编译的组件,或者更甚,比如在你的Dockerfile中运行编译。这样,每次微小改动都需要重建容器。你的E/C/R(编辑、编译、运行周期)看起来像这样:

  1. docker-compose up -d #启动所有的容器,并运行 
  2. # edit myservice 
  3. make myservice # 构建服务 
  4. docker-compose build myservice 
  5. docker-compose restart myservice 

按这种方式,整个重建的周期要花很长时间(超过30秒,还不包括服务自身的构建时间)来触发无聊至极的上下文切换。这绝对是生产力杀手。

你可以说这是个实现上的问题,并且最终这一重建周期将会大大加快,但是对比本地环境,构建和重启过程需要几乎无感。我也不觉得这会有效利用到Docker的镜像缓存。

如果愿意放弃使用生产容器作为本地开发容器的想法,或者运行一个没有构建过程的解释性堆栈,你或许可以改变游戏规则。你可将资源库目录装载到容器中,进而监听文件的变更,在容器内使用实时装载工具或刷新机制来重新编译和发布应用。

在一系列愚蠢的步骤下,这种方式也可工作的很好。比如我们将花时间寻找和设置docker-osx-dev开发环境,装载并与源文件夹高效的同步,又将花几个小时摆弄boot2docker以便使inotify正常工作起来,但是我们的确找到了解决方案。

但当我们回顾并看看这一变态的过程,我们竟然找不到令人信服的优势所在。我们在本地使用foreman启动所有服务,对比docker-compose up,foreman start速度难以置信的快。除了Docker容器本身,我们也继承了管理boot2docker所带来的复杂性。配置文档长度也增加了三倍。

我们的初衷是使用Docker作为本地开发环境,打破在本地只能运行如Memcached和Elasticsearch的几种关键服务。最终,我们得到结论,通过docker-compose运行后端服务是很有意义的,但配置和运行本地开发环境需要尽量简单。另外,我们又回到了通过foreman来运行本地微服务的方式。从此不再回头。

原文链接:http://www.dockone.io/article/660

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/232785.html<

赞 (0)
管理的头像管理
上一篇2025-04-20 08:04
下一篇 2025-04-20 08:05

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注