Vagrant就是你的开发环境的部署工具;而docker是你的运行环境部署工具。
为何还需要一个开发环境部署工具呢,很多国内程序员一定会问,我们平时随随便便就把一个Wamp设置好了,简单方便,开包即用。
问题是,现实的开发环境会比这复杂太多太多。数据库、缓存服务器、反向代理服务器、搜索引擎服务器(例如Sunspot或Elastic Search)、网站服务器、实时推送服务器。数据库大多数时还不止一种,为匹配各种架构一般创业公司都会起mysql及postgres,与此同时,根据你的业务需求可能还需要添入nosql或管理时间序列等各类数据库。这么多种不同的服务器,需要被配置并且完美地在一起配合工作,相信任何程序员老司机都知道,不是易事。即使你对每一块都很熟悉,每一次从头配起,你总会在某些地方栽跟头,即使依照事先做好的部署脚本来做,你还要保障每个软件工具的版本一致,然后脚本运行准确无误。即使真的有老司机熟练到每一次服务器迁移或者服务器scale up,都能准确无误地部署,那还是躲不过一个事实:老司机有一天也会离职,这项精确的部署技能如何得以香火延续?你教得再好,那也只代表你教的,线上运维问题就像打鼹鼠游戏,此处扑灭,彼处着火。
上述实际部署中会遇到的问题,不知道难倒过多少运维老司机,甚至一个小问题、小迁移,就能让他们痛不欲生、彻夜奋战。放假前五分钟能搞定的事,放假后愣是得用五个小时对付。
转而去思考一番,一个非常顺其自然的方法就是把当前的开发环境做个镜像,然后拷到U盘里,这样每一个新员工加入直接对着U盘安装就行(我有朋友的公司就这么干的!)。但这还是解决不了太多太多开发环境的设置问题,如果开发环境更迭了呢?再做一个u盘么?其他人再安装一遍么?
这个时候,vagrant的就出现了,而vagrant的出现显然就是为了解决以下两个重点问题:(1)开发环境快速部署 (2)开发环境更迭。少一个点没解决好,vagrant的存在都是伪需求。
说白了vagrant就是一个普普通通的装了一个Linux的VirtualBox虚拟机,配以vagrant 团队为之开发的一系列套件,辅助完成诸如安装初始化、文件同步、ssh、部署环境升级、功能插件安装等等一些列问题的开发环境部署套件。也没什么好神秘的
为何还需要一个开发环境部署工具呢,很多国内程序员一定会问,我们平时随随便便就把一个Wamp设置好了,简单方便,开包即用。
问题是,现实的开发环境会比这复杂太多太多。数据库、缓存服务器、反向代理服务器、搜索引擎服务器(例如Sunspot或Elastic Search)、网站服务器、实时推送服务器。数据库大多数时还不止一种,为匹配各种架构一般创业公司都会起mysql及postgres,与此同时,根据你的业务需求可能还需要添入nosql或管理时间序列等各类数据库。这么多种不同的服务器,需要被配置并且完美地在一起配合工作,相信任何程序员老司机都知道,不是易事。即使你对每一块都很熟悉,每一次从头配起,你总会在某些地方栽跟头,即使依照事先做好的部署脚本来做,你还要保障每个软件工具的版本一致,然后脚本运行准确无误。即使真的有老司机熟练到每一次服务器迁移或者服务器scale up,都能准确无误地部署,那还是躲不过一个事实:老司机有一天也会离职,这项精确的部署技能如何得以香火延续?你教得再好,那也只代表你教的,线上运维问题就像打鼹鼠游戏,此处扑灭,彼处着火。
上述实际部署中会遇到的问题,不知道难倒过多少运维老司机,甚至一个小问题、小迁移,就能让他们痛不欲生、彻夜奋战。放假前五分钟能搞定的事,放假后愣是得用五个小时对付。
转而去思考一番,一个非常顺其自然的方法就是把当前的开发环境做个镜像,然后拷到U盘里,这样每一个新员工加入直接对着U盘安装就行(我有朋友的公司就这么干的!)。但这还是解决不了太多太多开发环境的设置问题,如果开发环境更迭了呢?再做一个u盘么?其他人再安装一遍么?
这个时候,vagrant的就出现了,而vagrant的出现显然就是为了解决以下两个重点问题:(1)开发环境快速部署 (2)开发环境更迭。少一个点没解决好,vagrant的存在都是伪需求。
说白了vagrant就是一个普普通通的装了一个Linux的VirtualBox虚拟机,配以vagrant 团队为之开发的一系列套件,辅助完成诸如安装初始化、文件同步、ssh、部署环境升级、功能插件安装等等一些列问题的开发环境部署套件。也没什么好神秘的