看完 docker 官方教程,想搭个本地 php 开发环境,可搜了一圈,也没找到特别满意的文章,顺手总结一个。php
MacBook Pro,OSX 10.11.5html
解释执行 php 须要 php-fpm,先让它运行起来:nginx
docker run --name dream-php -d \ -v ~/Workspace/tmp/www:/var/www/html:ro \ php:7.1-fpm
说明:docker
本地存储路径:bash
~/Workspace/tmp/docker/nginx/conf.d/default.conf
配置文件内容:网络
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } 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 /var/www/html/$fastcgi_script_name; include fastcgi_params; } }
说明:php-fpm
docker run --name dream-nginx -p 80:80 -d \ -v ~/Workspace/tmp/www:/usr/share/nginx/html:ro \ -v ~/Workspace/tmp/docker/nginx/conf.d:/etc/nginx/conf.d:ro \ --link dream-php:php \ nginx
说明:测试
在 ~/Workspace/tmp/www 下放两个文件:spa
index.htmlcode
<html><body><h1>Hello World</h1></body></html>
phpinfo.php
<?php phpinfo();
接下来看结果吧:
若是看到 Hello World 和熟悉的 phpinfo,那么大功告成。
访问 index.html 时,nginx 读的是 /usr/share/nginx/html/index.html,这个路径经 dream.nginx 转换变成本地的 ~/Workspace/tmp/www/index.html。
访问 phpinfo.php 时,nginx 让 php-frm 执行 /var/www/html/phpinfo.php,这个路径经 dream.php 转换成 ~/Workspace/tmp/www/phpinfo.php。
怎样观察容器内文件系统:
docker exec -it dream-nginx bash