临时需要搭一个PHP开发环境,立刻想到了Docker。

安装太简单了,sudo pacman -S docker搞定。

每次运行docker命令总是要root身份或者sudo提权,有点讨厌。把自己加进 docker用户组就可以轻松解决。

1
2
sudo groupadd docker
sudo gpasswd -a ${USER} docker

懒得重启了,直接pkill X使其生效。

Docker Hub国内直连太慢了,中国区官方镜像源又相当废物。这里推荐Azure的镜像源,速度基本可以跑满。在/etc/docker/daemon.json中写入如下内容:

1
2
3
{
"registry-mirrors": ["https://dockerhub.azk8s.cn"]
}

然后systemctl restart docker.service生效。

docker pull nginx拉下nginx镜像,PHP的话建议先docker search php寻找实际需要的版本,这里以php:7.1.30-fpm为例。

开始做部署。建几个文件夹分别映射Web服务根目录、nginx配置文件和相关日志,在nginx配置文件目录下新建后缀名为.conf的配置文件,写入如下内容(仅作示例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php$uri;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}

实例化PHP:

1
docker run --name dev-php -v ~/Documents/Web/www:/www -d php:7.1.30-fpm

实例化Nginx:

1
docker run --name dev-php_nginx -p 8080:80 -v ~/Documents/Web/www:/usr/share/nginx/html -v ~/Documents/Web/conf:/etc/nginx/conf.d --link dev-php:php -d nginx

对应路径看着改吧,docker ps看到两个Container都跑起来就成。访问localhost:8080,看到熟悉的403 Forbidden就很舒服。至此,搭建完毕√