预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

其身正,不令而行;其身不正,虽令不从。——《论语》⽤docker搭建php环境,搭建基于Docker的PHP开发环境的详细教程现在很多开发者都使⽤Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷,不过也有不少缺点(最主要的是它占⽤太多的资源)。在容器技术、Docker和更多类Docker技术出现后,解决这个问题就变得简单了。免责声明由于boot2docker的⼯作⽅式,本⽂所述的⽅法在你的环境中可能⽆法正常运⾏。如果需要在⾮Linux环境下共享⽂件夹到Docker容器,还需要注意更多额外的细节。后续我会写篇⽂章专门来介绍实际遇到的问题。怎样才算是好的开发环境⾸先,我们得知道什么才是好的开发环境,对于我⽽⾔,⼀个好的开发环境需要具备以下⼏个特点:可随意使⽤。我必须可以随意删除和创建新的环境。快速启动。我想要⽤它⼯作时候,它⽴马就能⽤。易于更新。在我们⾏业中,事物发展变化⾮常快,必须能让我很容易将我的开发环境更新到新的软件版本。⽽Docker都⽀持以上这些特点,甚⾄更多。你⼏乎可以即时销毁和重建容器,⽽更新环境只需要重建你当前使⽤的镜像即可。什么是PHP开发环境⽬前Web应⽤错综复杂,PHP开发环境需要很多的东西,为了保证环境的简单性,需要做各种各样的限制。我们这次使⽤Nginx、PHP5-FPM、MySQL来运⾏Synmfony项⽬。Pet与Cattle另⼀个我们要讨论的重点是:我们要把开发环境部署在多容器还是单容器中。两种⽅式各有优点:单容器易于分发、维护。因为它们是独⽴的,所有的东西都运⾏在同⼀个容器中,这点就像是⼀个虚拟机。但这也意味着,当你要升级其中的某样东西(⽐如PHP新版本)的时候,需要重新构建整个容器。多容器可以在添加组件时提供更好的模块化。因为每个容器包含了堆栈的⼀部分:Web、PHP、MySQL等,这样可以单独扩展每个服务或者添加服务,并且不需要重建所有的东西。因为我⽐较懒,加上我需要在我的笔记本上放点别的内容,所以,这⾥我们只介绍单个容器的⽅法。初始化⼯程⾸先要做的是初始化⼀个新的Symfony⼯程.推荐的⽅法是⽤composer的create-project命令。本来可以在⼯作站上安装composer,但是那样太简单了。这次我们通过Docker来使⽤它。我之前发过⼀篇关于Docker命令的⽂章:makedockercommands(好吧,我说谎了,我本来把它写在这篇⽂章中了,然后觉得把它独⽴出来会⽐较好)。不管怎么样,你可以读⼀下。接下来如果还没有composer命令的话,你可以创建⼀个属于⾃⼰的composer别名。$aliascomposer="dockerrun-i-t-v\$PWD:/srvubermuda/composer"现在你可以初始化Symfony⼯程了:$composercreate-projectsymfony/framwork-standard-editionSomeProject帅呆了!下⾯来点实在的⼯作。容器构建⼀个运⾏标准Symfony项⽬且⾃给⾃⾜的容器相当容易,只需要安装好常⽤的Nginx、PHP5-FPM和MySQL-Server即可,然后把预先准备好的Nginx的虚拟主机配置⽂件扔进去,再复制⼀些配置⽂件进去就完事了。志不强者智不达,言不信者行不果。——墨翟志不强者智不达,言不信者行不果。——墨翟本容器的源代码在GitHub上的ubermuda/docker-symfony仓库中可以找到。Dockerfile是Docker构建镜像要⽤到的配置⽂件,我们来看⼀下:FROMdebian:wheezyENVDEBIAN_FRONTENDnoninteractiveRUNapt-getupdate-yRUNapt-getinstall-ynginxphp5-fpmphp5-mysqlndphp5-climysql-serversupervisorRUNsed-e's/;daemonize=yes/daemonize=no/'-i/etc/php5/fpm/php-fpm.confRUNsed-e's/;listen\.owner/listen.owner/'-i/etc/php5/fpm/pool.d/RUNsed-e's/;listen\.group/listen.group/'-i/etc/php5/fpm/pool.d/RUNecho"\ndaemonoff;">>/etc/nginx/nginx.confADDvhost.conf/etc/nginx/sites-available/defaultADDsupervisor.conf/etc/supervisor/conf.d/supervisor.confADDinit.sh/init.shEXPOSE8