使用虚拟机基本上是个非常吃硬件规格的一个选择。由于是当您需要多台虚拟机时,其所需付的代价可见一般。
您一定会好奇,难道没有折衷的方案吗?在近几年虚拟技术的发展下,最近出现了个新的选项叫Docker。有别于VirtualBox将一整台电脑从操作系统+应用程序一起压成虚拟机的作法,Docker则是在各操作系统上先做出一个共通的平台,而因开发而需要安装的其他软件,再依需求一个一个以容器(Container)的方式运作在这个平台上。由于不需要每次都先建立一个操作系统的底层,所以其所消耗的硬盘空间、运算资源及性能都会相较少一些。也因此Docker成为近几年,尤其是在测试上非常热门的一种选项。
在这篇介绍里,笔者将会示范如何运用Docker这项技术来建置PHP/Laravel的开发,在过程中会用到目前在Laravel国外社群里比较受欢迎的Laradock这个打包版。您可以把Laradock想像成是Homestead去掉操作系统层后的版本,未来要开发PHP/Laravel时,只要把Laradock运行起来即可。
您当然可以照着文件一行一行的贴指令去执行,不过笔者的这个系列偏好是愈无脑愈好。而有提供一个自动安装指令可以让我们下载后直接执行安装,只需要两行指令:
执行后这个Script就会自动判断我们所需使用的版本并下载安装,安装完成后可以用指令确认自己安装成功及安装的版本:
另外,由于Laradock会用到docker-compose这个指令,因此我们需要用apt将这个指令安装起来:
若您之后使用docker指令时不想要一直打sudo的话,可以依照的将自己的帐号加到docker这个群组:
不过要提醒您的是,由于我们目前是在自己的本机端建置开发,所以这样设定比较没有安装性风险。但若是在正式机上建置Docker的话,则您阅读一下文件,了解这样设定可能带来的风险。
Laradock是一个用Docker建造的PHP开发,一开始作者仅是为了Laravel而打包的,不过随着更多使用需求及社群贡献者的加入,现在已经可以支持众多PHP开发情境,包括Symfony、CodeIgniter、WordPress、Drupal…等。当然,您可以拿Laradock做各种PHP项目开发,在这篇介绍里会先以Laravel项目为示范。
Laradock可以有两种使用方式:一种是一个Laravel项目就启动一个Laradock,这种方式的好处是每一个项目都是干净的,但缺点就是消耗硬盘空间;另外一种方式就是所有项目共享一个Laradock,优缺点刚好相反。假如您跟笔者一样都是以开发Laravel项目为主,项目版本也都是5.3以上的话,共享一个Laradock应该会相形简单些,而在这篇介绍里也以这种方式为例。
第一步要先取得Laradock项目,笔者依照Homestead的惯例,也把Laradock项目放在家目录里,指令如下:
接着就可以将Laradock提供的容器启起来,以我们运行一个最基本的Laravel项目来说,只需要nginx及mysql即可:
注:其实除了nginx、mysql这两个容器会被建立外,也会同时启动php-fpm及workspace这两个容器。另外,第一次下载/安装/启动容器会花费一些时间,可以先放着让它跑一阵子。
由于我们可能会同时开发多个Laravel项目,所以我会在自己的家目录底下开个专门放项目的目录(比方说/home/shengyou/Projects),然后在这个项目目录底下建立Laravel项目。建立好的同时,我们也要先把项目目录设定给Laradock,让它知道我们的项目都放在家目录底下的Projects文件夹。
使用Docker这种虚拟化技术就是希望能把开发和工具都封装在容器里,也就是说本机端并没有PHP、Composer等指令可以使用。而Laradock在启动时,有帮我们准备一个名为workspace的容器,只要进到这个容器里面,就可以有composer、artisan这些指令可以使用。所以请先使用以下指令进入容器内:
登入后应该会发现工作目录是在/var/下,而里面的内容就是我们本机~/Projects的内容。
由于/var/www文件夹是本机和容器之间连接的文件夹,所以我们要在/var/www文件夹里建立Laravel项目,这样档案才会一并同步到本地端工作机。
接着,我们要把新建的项目设定成一个Nginx的虚拟站台。Laradock已经提供数种Nginx的站台样板,只要用Laravel的样板复制一份即可:
在上一步里,您会看到我们站台的网址是laravel.test,但这个网址只是拿来开发时使用,实际上并不存在。所以我们必需在本机上设定DNS对应,让浏览器输入这个网址时,会被导向到容器。换句话说,我们必需强制让laravel.test会被导向本机容器,也就是127.0.0.1。
完成后打开浏览器,输入网址laravel.test应该就可以看到Laravel的项目启动画面如下:
当完成开发工作后想关闭Laradock的话,可以使用以下指令将其关闭,等需要使用时再次:
最后,Docker安装完后,会被设定成在开机时预设启动。但因为我们只是拿来做开发机,并不需要一开机就启动,所以可以透过systemctl将其设定为预设不启动,等需要开发时再启动即可:
网友评论 ()条 查看