前言

最后更新于:2022-04-01 21:46:49

> 来源:[卧龙阁](http://www.wolonge.com/zhuanlan/detail/117441)的专栏[ PHP与创业的那些事儿](http://www.wolonge.com/zhuanlan/user/1002562) 环境部署是所有团队都必须面对的问题,随着系统越来越大,依赖的服务也越来越多,比如我们目前的一个项目就会用到: - Web服务器:Nginx - Web程序:PHP + Node - 数据库:MySQL - 搜索引擎:ElasticSearch - 队列服务:Gearman - 缓存服务:Redis + Memcache - 前端构建工具:npm + bower + gulp - PHP CLI工具:Composer + PHPUnit 因此团队的开发环境部署随之暴露出若干问题: 1\. 依赖服务很多,本地搭建一套环境成本越来越高,初级人员很难解决环境部署中的一些问题 2\. 服务的版本差异及OS的差异都可能导致线上环境BUG 3\. 项目引入新的服务时所有人的环境需要重新配置 对于问题1,可以用[Vagrant](https://www.vagrantup.com/)这样的基于虚拟机的项目来解决,团队成员共享一套开发环境镜像。对于问题2,可以引入类似[PHPBrew](https://github.com/phpbrew/phpbrew)这样的多版本PHP管理工具来解决。但两者都不能很好地解决问题3,因为虚拟机镜像没有版本管理的概念,当多人维护一个镜像时,很容易出现配置遗漏或者冲突,一个很大的镜像传输起来也不方便。 Docker的出现让上面的问题有了更好的解决方案,虽然个人对于Docker大规模应用到生产环境还持谨慎态度,但如果仅仅考虑测试及开发,私以为Docker的容器化理念已经是能真正解决环境部署问题的银弹了。 下面介绍[Docker构建PHP项目开发环境](http://avnpc.com/pages/build-php-develop-env-by-docker)过程中的演进,本文中假设你的操作系统为Linux,已经安装了Docker,并且已经了解[Docker是什么](https://www.docker.com/whatisdocker/),以及[Docker命令行的基础使用](https://docs.docker.com/userguide/),如果没有这些背景知识建议先自行了解。
';