使用Docker搭建PHP开发环境

Docker是十分优秀的软件容器化平台。它提供的容器技术将各类软件和它们所依赖的运行环境打包成标准的可移植的container(容器)/image(镜像),进而发布到不一样的平台上运行,而且能保证项目开发和生产环境的一致性。php

Why Docker ?

做为Web开发者,在Docker流行以前,要搭建开发环境一般有两种选择:一种是使用wamp、xampp、mamp等集成开发环境安装包,另一种就是使用普通虚拟机来安装linux服务器,而后经过下载一键安装包(如:lnmp)或者逐个安装作须要的软件。前者虽然简单,但太不灵活,想要安装额外的软件或者版本会很麻烦或者干脆不知道如何下手;后者除了费时费力,占用本机资源过多,可能会致使系统运行缓慢,并且若是你忘了及时生成快照,一旦失误,追悔莫及。mysql

幸亏,Docker来了!它简单易用,灵活多变,方便迅捷,扫除了以上种种弊端。若是你想稍微详细的认识下这位虚拟化界的明星,传送门(快速理解Docker)。linux

安装Docker

平时开发的环境通常都是Mac或者Windows,Linux暂时没有研究,因此接下来只针对前二者写下步骤,这两个平台,官方都推荐了两种安装方式:app和工具包(toolbox)。注:app方式对系统版本和配置会有必定要求,Mac版本会自动为你安装好VM(虚拟机),但Windows须要你安装微软虚拟化产品Hyper-V,而toolbox方式则须要你额外安装virtualbox来做为docker的VM。nginx

APPlaravel

工具包redis

以上方式本质上都会在你的系统中安装docker-engine、docker-machine、docker-compose和VM。由于docker高度依赖linux内核提供的cgroup,namespace 等特性和接口,因此mac和windows平台须要使用docker-machine和虚拟机在后台建立运行一个linux内核。docker

我以前的的安装方式就是直接在 Mac 上使用brew,但目前看来这种方式已经再也不推荐,强烈推荐使用原生的app方式!

Compose你的应用

docker-compose是用于定义和运行复杂Docker应用的工具。你能够在docker-compose.yml文件中定义一个多容器的应用,而后使用一条命令来启动,而后全部预先定义好的操做都会被自动完成。

为了避免重复造轮子,直接使用github上的第三方包。固然你也能够亲自构建每个你所须要的容器镜像,而后用docker-compose.yml将全部容器组织起来运行,但这须要你具有必定的linux基础和docker的运行机制和相关语法。

本人正在学习laradock这个基于Docker的开发环境包,而后根据本身的须要删除了一些我认为不经常使用的部分、修改了部分配置以及增长了Elasticsearch容器,最终新开了本身的仓库DevDock。固然,也推荐使用laradock。

个人仓库目前支持的容器组合:
nginx, php-fpm, mysql, redis, memcached, elasticsearch, workspace.
注:workspace和php-fpm通常会被其余容器所依赖,因此会自动运行,启动时没必要指定。

  • 进入到你的应用的上级目录:

git clone https://github.com/RystLee/DevDock.git
  • 修改hosts
    若是直接安装启动,是能够经过 127.0.0.1,就能直接访问nginx的,但通常而言为了方便记忆,咱们会去修改hosts文件,增长一条:

127.0.0.1  laravel.dev
  • 修改你的nginx中的站点配置文件:
    在DevDock目录下找到nginx,修改sites目录下的站点配置文件,经过修改本地的hosts来自定义域名,并在nginx容器中的sites文件夹下,修改相应的域名映射。

server_name  laravel.dev
  • 安装启动应用

cd DevDock
docker-compose up -d nginx mysql ... # 后面跟上你想使用的容器便可

而后,耐心地等待开发环境自动搭建完成便可,若是中途出现错误,通常是由于GFW,网络会不太通畅,从新执行一两次就好,完成以后,打开浏览器,访问:http://laravel.dev便可。

关于该开发环境包详细使用,请直接查看github仓库的说明文档便可。

本文连接: https://macken.me/article/cre...

声明 在转载或修改本文后发布的文章中注明原文来源信息的前提下,容许进行转载该篇文章或经修改后发布且不用告知本文做者。

相关文章
相关标签/搜索