1、 docker多容器链接,通过我们下载的nginx镜像以及PHP镜像通过link链接到一起,方便我们之后切换PHP版本

2、 首先在link链接的时候对于命令的不熟悉,出了很多错误,http://showdoc.ichongzh.com/web/#/2?page_id=29,这是文档地址,通过文档了解到,首先需要运行php容器,然后在运行我们的nginx,将php容器链接到我们的nginx容器

3、 安装docker,https://download.docker.com/mac/stable/Docker.dmg,下载docker并安装,安装成功之后可以在命令行进行操作

4、 docker images 查看我们已下载的docker镜像

docker容器添加映射 docker容器映射到本地_docker


https://hub.docker.com/_/docker docker hub,用来搜索镜像

docker容器添加映射 docker容器映射到本地_docker_02


点击进去,复制下方的话,就可以pull下来我们需要的镜像

docker容器添加映射 docker容器映射到本地_nginx_03


docker容器添加映射 docker容器映射到本地_docker容器添加映射_04

5、 docker ps 查看运行的容器

docker容器添加映射 docker容器映射到本地_docker容器添加映射_05


开始的时候下载的PHP镜像生成容器之后,docker ps 查看一直没有,试了很久发现下载的php镜像时间太早,四年前的,所以重新下了一个最近的,运行之后就可以看到容器了

6、 运行PHP

docker run --name php5.6 -v /Applications/MAMP/htdocs/directory:/data/www -d fad7b4a27c7b

docker run --name 生成的容器名称 -v 我们本地的项目:映射到PHP中的文职 -d 镜像名称或id

directory就是我们项目的文件目录名称

运行nginx
docker run --name nginx -p 8888:80 -v /Applications/MAMP/htdocs/directory:/usr/share/nginx/html --link php5.6:php5.6 -d nginx

docker run --name 生成的容器名称 -p(端口) nginx端口:nginx端口映射我们本地的端口 -v 本地项目:nginx中项目所处的位置 --link(链接) PHP容器名称:起的别名 -d nginx

7、 docker exec -it nginx /bin/bash 进入容器,nginx 容器名称

cat /etc/nginx/conf.d/default.conf 查看nginx配置文件

一开始容器链接成功之后一直是403或404,发现只可以访问.html文件,找到原因是PHP并没有链接成功,原因就是在 nginx中,PHP的配置有问题

docker容器添加映射 docker容器映射到本地_docker容器添加映射_06

8、 又是后配置文件包括之前的各种处理都完成之后,进入nginx容器,

docker exec -it name(nginx容器名称) /bin/bash

cd /usr/share/nginx/html 发现该文件夹下并没有任何文件,意思就是本地文件并没有链接到我们容器中,这时很大的可能就是因为 mac限制了我们共享文件的权限,这里需要我们去进行配置一下

打开我们的docker软件版,点击preferences

docker容器添加映射 docker容器映射到本地_nginx_07


docker容器添加映射 docker容器映射到本地_PHP_08


点击3中的 + 号,添加我们需要映射的文件夹路径,这样就可以解决映射失败的问题了。

注意⚠️:
当我们在nginx中安装vim,apt-get install vim失败之后,
需要先进行更新:apt-get update,
然后再 apt-get install vim
当运行apt-get update后出现如下错误时:
E: Some index files failed to download, they have been ignored, or old ones used instead.
可以将目录下/var/lib/apt/lists/partial/所有的文件清掉,
再次运行apt-get update即可!
这时就可以正常进行安装了

运行之后显示不支持MYSQL或是REDIS就说明PHP中并没有安装该扩展,需要进入PHP容器中安装扩展就好了