用Docker在Linux下搭建PHP+Apache开发环境

2018-01-07


之前姜神在Windows10下帮忙搭建了基于xampp的PHP环境,不过由于长期使用ArchLinux写代码,因此也想在Linux环境下搭建一下PHP环境……然而并不想直接在系统里安装PHP和Apache:一来几个应用需要不同的PHP版本;二来直接在个人PC里装Apache有一种不够“轻量”的感觉。这样就不自觉地想到也许可以用Docker搭建一下环境?上Docker Hub看了一下,发现用Docker搭建PHP+Apache的环境还蛮方便的哟。

第一次使用Docker,因此下文操作中就尽量避开Dockerfile的编辑了。

本文内容主要来自https://hub.docker.com/_/php/


Docker是一个使用Go语言开发的基于Apache2.0协议开源的项目。它是一种操作系统层面的虚拟化技术,对进程进行封装隔离。它直接运行于宿主内核之上,而不需要像传统的虚拟机一样抽象出硬件,重新安装操作系统。

安装Docker

ArchLinux官方已经把Docker帮您打包好了:

pacman -S docker


拉取新镜像,创建新容器

操作系统分为内核和用户空间。内核启动后,挂载root文件系统为其提供用户空间支持。而Docker相当于一个root文件系统。Ubuntu:16.04这一镜像就包含了一套Ubuntu16.04最小系统的root文件系统。

而容器则是一个镜像运行时的实体。我可以停止、重启一个容器。

我运行下述命令拉取一个含有PHP7.2和Apache2的新镜像,然后创建并运行一个名为php-dev的容器。

sudo docker run -d -p 8080:80 --name php-dev -v "$PWD":/var/www/html php:7.2-apache

Docker其实首先会检索本地是否存在php:7.2-apache这个镜像。没有的情况下从镜像站上拉取。

参数-p 8080:80把容器的80端口映射到本地的8080端口。-v “$PWD”:/var/www/html 把当前文件夹挂载到容器中的目录/var/www/html下。

容器创建完成后,你的PHP应用就已经部署好了。


安装PHP拓展

这个极简镜像可没有帮你把一些你会用到的PHP拓展装好。不过你可以在容器中很方便地安装PHP拓展:

首先进入容器里的终端

sudo docker exec -ti php-dev bash

安装你需要的PHP拓展(mysqli)

docker-php-ext-install mysqli
docker-php-ext enable mysqli

重启容器

sudo docker restart php-dev

这波操作下来感觉用Docker配环境真是非常方便。寒假好好读一下The Docker Book提高一下姿势水平。