1.1 命令行安装
用命令安装的童鞋把稳,长城宽带会让你非常失落望!
brew cask install docker
1.2 安装包安装
如果须要手动下载,请点击以下链接下载 Stable 或 Edge 版本的 Docker for Mac。
1.3 设置镜像
至于为什么要设置镜像嘛,我只能说呵呵
我这里设置了http://f1361db2.m.daocloud.io
详细方法如下:
docker设置镜像-1
docker设置镜像-2
2. 安装nginx2.1 安装
docker pull nginx
2.2 准备好本地配置文件
在本地准备好nginx的配置文件,这里一定要记好,运行nginx的时候要用
/Users/sole/docker/nginx
docker本地配置文件
2.3 准备好本地网站存放的目录
在本地准备好的网站存放目录以及网站,记好,后续有用
本地网站存放的目录
2.4 运行nginx
docker run \--name nginx_server \-p 80:80 \-v ~/Sites:/etc/www \-v ~/docker/nginx/conf.d:/etc/nginx/conf.d \--link php_server:php \-d nginx
各个参数的阐明: 各个参数配置遵照这个规则: 本地目录:容器地址
--name 是tag名字
-p 端口映射
-v 配置文件夹
-d 后台运行
--link 这个还不怎么明白,大概意思便是把php_server并入nginx_server, 然后在nginx的配置文件里面配置的时候,直接用php,请看nginx配置代码;当然这个也不是必须这么做,知识这么做很方便;如果不用这个方法,可以运行docker inspect php_server | grep '\"大众IPAddress\"大众'获取容器IP,把IP放在这里也可以。这里配置不好的化,php文件运行不起来的。
location ~ \.php$ {fastcgi_pass php:9000;fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
2.5 确保nginx已经启动
运行 docker ps -a 来看查nginx是否启动成功
确保nginx已经启动
看到这里,只能解释nginx已经实例化了,但是并不愿定是否启动,这个时候可以用工具来检讨
如果你用的是VSCode,那么可以安装docker插件,来管理运行的容器实例
docker插件
如果弗成用这个可以用docker的图形管理工具 keitematic
keitematic
kitematic长这个样子: 在这里可以看是否启动,还可以配置干系参数
kitematic
2.6 nginx配置把稳事变
2.6.1 关于程序目录 /etc/www/php
把稳root参数的值,这个目录是容器里面的目录,不是本地的, /etc/www/php 是指容器的目录,如果你本地和容器目录同等的话,可以不用理会
server {listen80;server_namewww.php.cc;root/etc/www/php;location / {indexindex.html index.php index.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/1010000016515320
3.安装php3.1 安装
这里安装最新版本的php
docker pull php:fpm
3.2 准备好本地程序文件夹
我本地的目录在 /Users/sole/Sites,这里就不截图了,上面该当能看到的
/Users/sole/Site 可以简写为 ~/Sites,由于 ~ 代表当前用户的home目录
3.3 跑起来
docker run --name php_server \-p 9000:9000 \-v ~/Sites:/etc/www \--link mysql_server:mysql \-d php:fpm
3.4 安装扩展
先得进入容器:docker exec -it php_server /bin/bash
然后运行 docker- , 按两下tab键会有提示
语法:docker-php-ext-install 扩展名,比如:docker-php-ext-install mysqli
3.5 PHP连接数据库
连接数据库的时候最好查看一下mysql的ip,我这里是 172.17.0.2,以是这里这样写了:
$db = [ 'hostname' => '172.17.0.2', 'username' => 'root', 'password' => 'root', 'database' => 'learing', 'port' => 3306, 'charset' => 'utf8'];
把稳一下 3.3小姐里面的代码:link这里,如果不连接mysql,在php连接数据库的时候,须要获取到mysql_server的容器IP,如果这里link了,那么在host这里可以直接写link的值,请看代码:
$db = [ 'hostname' => 'mysql', // mysql便是php link mysql 的值 'username' => 'root', 'password' => 'root', 'database' => 'learing', 'port' => 3306, 'charset' => 'utf8'];4. 安装mysql
4.1 安装
docker pull mysql
4.2 运行起来
docker run --name mysql_server \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=root \-d mysql
4.3 查看mysql_server IP
docker inspect mysql_server | grep '\"大众IPAddress\公众'
查看mysql_server IP
4.3 进入mysql
docker run -it \--link mysql_server:mysql \--rm mysql sh \-c 'exec mysql -h\"大众$MYSQL_PORT_3306_TCP_ADDR\"大众 -P\公众$MYSQL_PORT_3306_TCP_PORT\"大众 -uroot -p\"大众$MYSQL_ENV_MYSQL_ROOT_PASSWORD\"大众'
进入mysql
5. 其他细节这里列举几个问题,如果又其他问题,请留言,我会改动啊
5.1 关于容器启动顺序
由于nginx_server link 了php,php_server又link了mysql_server,以是,容器启动顺序为:mysql_server > php_server > nginx_server
5.2 如何进入容器
$ docker exec -it nginx_server /bin/bash$ docker exec -it php_server /bin/bash$ docker exec -it mysql_server /bin/bash
5.3 mysqli报错
该当是没有安装mysqli扩展,进入php容器安装扩展就可以了
docker-php-ext-install mysqli
5.4 php安装gd库
进入php容器后,请 依次 实行以下命令:
apt-get updateapt-get install libpng-dev libjpeg-dev libfreetype6-dev freetype libjpegdocker-php-ext-install gddocker-php-ext-enable gd
末了,有什么问题欢迎留言!