基于Docker的开发实践案例分享

当下,容器已成为一个非常热门的趋势,而只要谈到容器大家也通常都会说到Docker。甚至,容器已经有了自己的动词形式containerizing,用以描述使用Docker将应用程序打包。

在热烈争论之后,Docker领域的重点迁移到如何在现实生产环境中使用容器,人们纷纷将“containerization”的哲学运用到存储、网络,亦或是管理。

毫无疑问,在这个强劲的势头下,Docker可以在生产环境稳定使用肯定不会太遥远。而这里将分享一些基于Docker的用例,它们已经得到了工程师的验证。

首先,在另一篇博客中我已经简单的提到了这些,而本文则是基于和同事交流的扩展。当然,这些并不是对Docker只是一个市场趋势说法的辩驳。

将功能测试提升一个等级

在这里,我不想继续去重复解释功能测试以及不同类型的软件测试。当下已经有很多文章解释为什么单元测试前必须基于真正的服务和运行环境。

当下,基于单元测试的测试驱动开发已经被证明是一个很好的应用程序开发途径,整个开发过程将与单元测试密不可分。通常,你会同时开始写单元测试和代码,并以迭代的方式不停的填补代码和单元测试。

当代码运行正常后,在评审和合并之前,它通常会被提交到CI环境以运行单元测试,也许在review和merge之前,还会做一些功能测试。

针对某个功能的功能测试并不会在同时提交,因为功能测试进行起来并不容易,同时也会花费很多时间。你必须正确配置所有东西,比如数据库的初始建立,比如测试所需的上下文中如何进行通信。

同时,即使你以这种方式搭建了测试环境,运行的也还算良好,大部分人仍然只是简单地将它放在几个同事共享的一个虚拟机中进行,而不是设置一个一整套的环境,实现类似DB、APP和Web Server那样的交互。你肯定也不会去测试应用程序的扩展性,因为它的开销更加昂贵。

在多服务间进行功能测试,而不是一个简单的VM

而这些,你使用Docker和Fig搭配就可以轻松实现。你可以指定不同的环境,并快速的进行部署。你可以直接在CI中运行不同的目标和内容;更重要的是,你可以非常便捷的将之与同事共享。这一切都是因为Docker,它可以为镜像构建一些非常智能的缓存,并且在数秒内运行这些镜像。

告诉用户应用该以什么样的方式部署

在构建Dockerfile时,你会指定应用程序的构建途径,以及配置的具体内容。同样,你可以向用户表达它是如何工作的。鉴于你并不具备专业复杂软件部署从业者的经验和技术,结果可能不会尽善尽美,但是最低限度的,你可以告诉用户工作是如何进行的,而不是让他们自己绞尽脑汁。

甚至,你可以让单元测试更加鲁棒!

在另一篇博客中,我为大家介绍了Dox。如果你玩过OpenStack,你会发现OpenStack经常需要运行众多非常复杂的测试,因此我们需要一个系统简化这个过程中的复杂度。然而,并不是只有OpenStack才有这些非常复杂的测试,比如你需要运行Sqlalchemy,同时你需要在后端的sqlite,以运行你的单元测试。但是最终你可能因为一些非常奇怪的状态终止,比如foreign keys不能正常工作,以及一些其他SQL功能不能实现。但是通过容器,你可以轻松的将配置好的DB打包,从而轻松的完成这些测试。以此类推,在你需要依赖某个系统,或者某些配置/文件时,Docker可以轻松地将它们打包。

希望在了解这些点后,你能更加坚定容器是开发流程中必不可少的一环。同时,我也希望有更多的内容会添加到这些工作流程中,而未来也会出现更多强大的工具让开发更加便捷。

原文链接:Use cases for Docker driven development.(编译/童阳 审校/周小璐)

时间: 2024-11-16 09:24:47

基于Docker的开发实践案例分享的相关文章

DockOne微信分享(八十七):基于Docker的开发云提高资源利用率的实践

本文讲的是DockOne微信分享(八十七):基于Docker的开发云提高资源利用率的实践[编者的话]Docker的出现,为更简便.更细粒度地对云资源的调控提供了一个强有力的支撑,WeX5开发者云基于Rancher+Docker,在如何提高物理资源利用率的课题上做了一些探索和研究,在保障用户体验良好的前提下,大大提高了物理资源的利用率,有效地降低了运营成本. 一般情况下,开发者从无到有开发一个可用于公网访问的HTML5的App应用的流程是这样的:配置开发环境.开发应用.本地调试.租用公网服务器.注

麻袋理财基于Docker的容器实践:互联网金融征信项目的微服务化之旅

FinTech第一期 征信是互联网金融的核心系统之一,在单体应用到服务化改造中,定义了API Gateway,Scheduler Service,Data Processing Service,Cache Service和Worker Service等服务,并实现了对基于Docker的微服务化. 本次分享的主题是<麻袋理财基于Docker的容器实践>--              征信要做的事情就是从内部外部获取数据,以此对用户的还款意愿进行甄别. 现在市场上也有很多第三方的征信公司,每家征信

基于Docker的开发模式驱动持续集成落地实施

11月30日,资深质量优化专家陈能技老师,在[DBA+社群]中间件用户组进行了一次主题为"基于Docker的开发模式驱动持续集成落地实施"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢陈能技老师对DBA+社群给予的大力支持.    嘉宾简介   资深质量优化专家,12年软件测试与质量管理经验 <软件性能测试诊断分析与优化>等多本IT畅销书作者 演讲实录   今天主要交流的主题是基于Docker的开发模式如何驱动持续集成落地实施,这里会涉及两个主要的

360图片搜索 瀑布流布局的开发实践案例

开发实践案例-瀑布流布局"> 瀑布流的布局方式展现的内容通常是扁平化.琐碎的东西.首先吸引人的应该是图片,并且图片是那种参差不齐的,如果瀑布流中文字过多,会给人很杂乱的感觉,所以瀑布流更适合单纯的图片浏览. 前不久公司上线的项目–360图片搜索的美女秀场频道,就用到了瀑布流的布局方式,这种纯粹的看美女图片的页面用瀑布流还是挺合适的. 以前并未开发过瀑布流布局的网站,第一个想到的实现方式就是多列浮动,从表面上看这种方式要简单. 传统的定位布局方式 但是,目前主流的瀑布流布局都是采用定位的方式

十大基于Docker的开发工具

随着Docker的发展,Docker的生态圈也越来越成熟,GitHub上出现了很多与Docker相关的开源项目.近日,CenturyLink在其博客上总结了基于Docker的10个开发工具,主要集中在http://www.aliyun.com/zixun/aggregation/14123.html">PaaS平台.集群管理.持续集成和Docker的管理工具等四个方面.InfoQ中文站在其基础上进行了整理,具体如下. Flynn Flynn是一个使用Go语言编写的开源PaaS平台,Flyn

携程网实践案例分享:利用HTML5监控网站性能

中介交易 SEO诊断 淘宝客 云主机 技术大厅 文 / 储诚栋,刘海峰,谢生校 HTML5技术给Web带来很多新的元素,不仅使网站变得越来越美观,交互体验越来越接近完美,更使得很多曾经不可能完成的功能都可以实现.本文针对HTML5在网站性能监控方面带来的新特性,与大家分享携程旅行网在此方向的实践经验. 网站性能监控的现状 网站性能越来越被大众所关注,因为它直接影响用户体 验.大多数互联网公司在网站性能监控方面仅做到服务器性能监控和网络I/O监控,这样的背景催生了一些第三方做网站性能监控的公司,如

深入浅出Docker(五):基于Fig搭建开发环境

深入浅出Docker(五):基于Fig搭建开发环境 1. 概述 在搭建开发环境时,我们都希望搭建过程能够简单,并且一劳永逸,其他的同事可以复用已经搭建好的开发环境以节省开发时间.而在搭建开发环境时,我们经常会被复杂的配置以及重复的下载安装所困扰.在Docker技术未出现之前,我们可以使用Pupet.Chef.Ansible等配置管理工具把复杂的配置管理起来,这样的管理配置技术仍然是目前比较流行的方式之一.配置管理工具使用的都是自己的DSL语法定义,考虑到环境的复杂性,配置一套通用的开发环境需要针

基于Docker的PHP开发环境

本文讲的是基于Docker的PHP开发环境,[编者的话]本文作者是Geoffrey,他是一个PHP的Web开发者,喜欢DevOps和Docker.本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读. 现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现

基于 Docker 的 PHP 开发环境

基于 Docker 的 PHP 开发环境 [编者的话]本文作者是Geoffrey,他是一个PHP的Web开发者,喜欢DevOps和Docker.本文主要介绍了如何使用Docker构建 PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读. 现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现