这里教大家用docker安装nginx、php、mysql,搭建一套完整的本地开发环境。此处列出了mac。windons的安装类似,大家可以试试。1、安装docker官网:https://www.docker.com/1.1命令行安装用命令安装的童鞋注意,长城宽带会让你很失望!brewcaskinstalldocker1.2安装包安装如果需要手动下载,请点击下方链接下载DockerforMac的Stable或Edge版本。1.3设置镜像至于为什么要设置镜像,我只能说我这里设置了http://f1361db2.m.daocloud.io。具体方法如下:2、安装nginx2.1安装dockerpullnginx2.2并准备本地配置文件在本地准备好nginx的配置文件,这里一定要记住。运行nginx时,使用/Users/sole/docker/nginx2.3准备本地网站存放目录。在本地准备网站存储目录和网站。记住,后面会有用2.4Runnginxdockerrun\--namenginx_server\-p80:80\-v~/Sites:/etc/www\-v~/docker/nginx/conf.d:/etc/nginx/conf.d\--linkphp_server:php\-dnginx各参数说明:各参数的配置遵循以下规则:本地目录:容器地址--name为标签名-p端口映射-v配置文件夹-d后台运行--link这个不是很清楚,大概意思是将php_server合并到nginx_server中,然后在nginx配置文件中配置的时候直接使用php,请看nginx配置代码;当然,这不是必须的,这样做很方便;如果你不使用这个方法,你可以运行dockerinspectphp_server|grep'"IPAddress"'获取容器IP,也可以把IP放在这里。如果这里配置不好,php文件是跑不起来的。位置~\.php${fastcgi_passphp:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;包括fastcgi_params;}2.5确保nginx已经启动,运行dockerps-a查看nginx是否启动成功。可以显示nginx已经实例化,但是不确定是否启动。这时候可以使用工具进行检查。如果您使用的是VSCode,则可以安装docker插件来管理正在运行的容器实例。如果没有,可以使用dockergraphics管理工具keitematickitematic是这样的:这里可以看到是否启动,也可以配置相关参数,不是本地的,/etc/www/php指的是该目录container,如果你的本地目录和容器目录一致,可以忽略server{listen80;server_namewww.php.cc;根/etc/www/php;location/{indexindex.htmlindex.phpindex.htm;}}2.6.2关于nginx配置文件目录映射/Users/sole/docker/nginx/conf.d:/etc/nginx/conf.d这里建议把conf.d的目录映射配置好。如果设置为-v/Users/sole/docker/nginx:/etc/nginx,本地文件会覆盖被覆盖容器中的配置文件,导致nginx无法启动。或者无法运行php文件,会出现错误:https://segmentfault.com/q/10...3.安装php3.1安装最新版本的phpdockerpullphp:fpm3.2这里准备本地程序文件把我的本地目录夹在/Users/sole/Sites,这里就不截图了,应该可以的看到的/Users/sole/Site可以简写为~/Sites,因为~代表当前用户的家目录3.3运行dockerrun--namephp_server\-p9000:9000\-v~/Sites:/etc/www\--linkmysql_server:mysql\-dphp:fpm3.4安装扩展首先要进入容器:dockerexec-itphp_server/bin/bash然后运行docker-,按两次tab键出现会提示Syntax:docker-php-ext-installextension,如:docker-php-ext-installmysqli3.5PHP连接数据库时,最好查看mysql的ip,我的是172.17.0.2,所以这里写成:$db=['hostname'=>'172.17.0.2','username'=>'root','password'=>'root','database'=>'learing','端口'=>3306,'字符集'=>'utf8'];注意3.3小姐姐的代码:链接这里,如果不连接mysql,需要在php连接数据库的时候获取mysql_server的容器IP。如果在这里链接,可以直接在hostValue中写link,请看代码:$db=['hostname'=>'mysql',//mysql是phplinkmysql'username'=>'root'的值,'password'=>'root','database'=>'learing','port'=>3306,'charset'=>'utf8'];4、安装mysql4.1安装dockerpullmysql4.2运行dockerrun--namemysql_server\-p3306:3306\-eMYSQL_ROOT_PASSWORD=root\-dmysql4.3查看mysql_serverIPdockerinspectmysql_server|grep'"IPAddress"'4.3输入mysqldockerrun-it\--linkmysql_server:mysql\--rmmysqlsh\-c'execmysql-h"$MYSQL_PORT_3306_TCP_ADDR"-P"$MYSQL_PORT_3306_TCP_PORT"-uroot-p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'5.其他细节这里有几个问题。如果还有其他问题,请留言,我会改正。php_server再次链接mysql_server,所以容器启动顺序为:mysql_server>php_server>nginx_server5.2如何进入容器$dockerexec-itnginx_server/bin/bash$dockerexec-itphp_server/bin/bash$dockerexec-mysql_server/bin/bash5.3mysqli错误应该是没有安装mysqli扩展,直接进入php容器安装扩展docker-php-ext-installmysqli5.4php安装gd库,进入php容器,请依次执行以下命令:updateapt-getinstalllibpng-devlibjpeg-devlibfreetype6-devdocker-php-ext-installgd
