php发展

注册

 

发新话题 回复该主题

使用Docker高效搭建开发环境 [复制链接]

1#
皮肤病医院哪家好 http://baidianfeng.39.net/bdfby/yqyy/
Docker作为轻量级的基于容器的解决方案,它对系统侵入性低,容易移植,天生就适合做复杂业务部署和开发环境搭建,今天给大家带来的是奇虎的开发是如何使用Docker高效搭建开发环境的。作为一个平时喜欢折腾的开发人员,我喜欢尝试各种环境,使用感兴趣的各种开源软件。同时,我也是有一些相对的小洁癖,很喜欢Linux中权限最小化原则,我也不喜欢自己的环境中有太多不知道的东西。做了多年的Web开发,我接触到的环境大致如下:

操作系统从CentOS5到CentOS7;

WebServer从Apache到Nginx;

开发语言从最初的PHP5.2到PHP7,又到现在主要使用Go,马上还会开始接触C++;

数据库从MySQL5.1到现在的5.7,前阵子又开始折腾MariaDB;

Cache选型从Memcache到Redis;

队列用过Kafka,去年开始大量使用NSQ。

公司虽然有专门负责部署、运维这些服务的同学,但我在开发的时候,还是喜欢自己来搭建这些东西,因为这样通常可以对使用到的服务有更多的认识,也能帮助自己使用的更好。今天我就来和大家分享下我是如何高效的搭建好自己的开发环境的。搭建前说明这里先说明一点,对每个开源软件,我几乎都是自己编译部署的,而不会使用类似yuminstall这种方式,也很少直接下载官方编译好的二进制包,这都是为了能多深入了解用到的开源软件。但一些依赖的动态库文件,如zlib等,还有编译工具,如GCC、make等,我都是通过方便的yuminstall这种方式直接安装的,否则会累死。传统做法我在很长的一段时间内,都是把每个软件的编译、安装过程写成一个脚本,之后再需要用的时候直接运行脚本即可,但这样的方式,通常会遇到下面这些问题:

脚本只能在我当时的操作系统环境下运行。记得当时购买过不同服务商的VPS,虽然不同VPS我都使用同样的Linux发行版,但脚本通常都不能一键跑完。这也是没办法,因为每个VPS服务商都会制作自己的操作系统镜像版本。

操作系统升级,如CentOS5-6,或是换为Ubuntu,这样基本上脚本都跑不了。

软件升级,如MySQL5.2-5.6,构建工具改为CMake,依赖库改变或升级。

如果某个软件依赖的公共库版本和其它软件不同,且公共库升级后和旧版不兼容,那你就只能为这个软件单独编译公共库了,如果只是普通的公共库还好,但如果是所需要的编译工具版本不同,那可就惨了。

上面这些问题,如果你想每个发行版维护一个脚本,那会累死,因为一旦你每次想升级一个软件,难道每个发行版都要编译一遍吗?这就变成了收获价值很低的体力劳动了。由于喜欢折腾的个性,我对操作系统的升级以及软件包版本的升级又经常发生,所以一直以来,我都在寻找一个好方法,能很方便的维护好自己的开发环境,尽量做到只=新东西只为它工作一次,最后我找到了Docker,目前我都是用它来搭建自己的开发环境的。Docker做法先概括介绍下我的方法:

让每个软件运行在容器中,因为运行的容器环境是可以固定下来的,所以编译安装脚本写一个就可以了。

代码使用数据卷的方式加载到需要的容器中。

因为是开发环境,所以网络方面使用最简单的--net=host。

将镜像的创建、容器的启动维护在Git项目中,并抽象出统一的构建过程,很方面的做到新软件接入,新机器部署。

下面用实例来说明把:示例Nginx环境构建我将构建过程放到Git中:
分享 转发
TOP
发新话题 回复该主题