使用Docker快速搭建PHP開發環境
- 2020 年 4 月 19 日
- 筆記
最近有個同事找過來,希望我對在很早之前寫的一個PHP網站上增加一些功能,當時開發使用xampp
構建的本地開發環境,但是現在我的筆記型電腦電腦已經更新,沒有當時的開發環境。本著盡量不往電腦上裝無用軟體的原則,想到能不能用Docker來構建本地開發環境,因此本文介紹了如何基於Docker來快速構建本地PHP
開發環境,供有需要的同學參考使用。
本文基於
5.6-fpm-alpine3.8
以及ngingx
搭建Mac 下的PHP開發環境。
前期準備
首先下載所需要的鏡像文件
$ docker pull php:5.6-fpm-alpine3.8
$ docker pull nginx
$ docker pull mysql
用戶需要到hub.docker.com,搜索PHP並通過tags找到自己希望安裝的版本,我的項目因為開發時間比較久了,不能夠支援最新的PHP,所以安裝的是5.6版本。
我們需要準備一個工作目錄,例如lnmp
,在工作目錄下準備網站根目錄、Nginx配置文件目錄、Nginx日誌目錄。
$ mkdir lnmp
$ cd lnmp
$ mkdir -p nginx/www nginx/logs nginx/conf
在nginx/conf
目錄下準備nginx
的配置文件php.conf。
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
編排文件
在工作目錄下創建docker-compose.yml
編排文件。
關於
docker-compose
的詳細介紹可以參考我之前的文章docker-compose 使用介紹。
version: "2.1"
services:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ~/Projects/sh-valley/docker-conf/lnmp/nginx/www:/usr/share/nginx/html
- ~/Projects/sh-valley/docker-conf/lnmp/nginx/conf:/etc/nginx/conf.d
- ~/Projects/sh-valley/docker-conf/lnmp/nginx/logs:/var/log/nginx
networks:
- lnmp-network
php:
image: php:5.6-fpm-alpine3.8
volumes:
- ~/Projects/sh-valley/docker-conf/lnmp/nginx/www:/www
networks:
- lnmp-network
mysql:
image: mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
networks:
- lnmp-network
networks:
lnmp-network:
至此,我們完成了所有的準備工作,馬上可以啟動查看效果。
運行效果
$ docker-compose up -d
Creating network "lnmp_php-network" with the default driver
Creating lnmp_nginx_1 ... done
Creating lnmp_php_1 ... done
馬上就能看到熟悉的phpinfo
介面了。
安裝擴展
默認php
鏡像中提供的擴展比較少,缺少諸如mysql、gd2
等常用的擴展,這樣我們就需要自己安裝並啟用擴展。
首先進入到php
容器,用php -m
命令查看本地有什麼擴展。
可以使用docker-php-ext-install
命令來安裝擴展。
$ docker-php-ext-install mysql
擴展安裝好之後就可以在php.ini
中啟用。我們從phpinfo
中可以看到,容器環境下默認的php.ini
沒有啟用,可以從/usr/local/etc/php
下將php.ini-development
拷貝為php.ini
。通過修改php.ini
中配置,啟用自己需要的擴展。下面是幾個擴展安裝的命令,供大家參考。
docker-php-ext-source
在容器中創建一個/usr/src/php
目錄docker-php-ext-enable
啟用PHP擴展,省去我們手工編輯php.ini
的過程docker-php-ext-install
安裝並啟用PHP擴展docker-php-ext-configure
經常與docker-php-ext-install
搭配,在需要自定義擴展的配置時使用