完整文章地址
命令行搭建
安装mysql
1.mysql镜像拉取
从仓库中拉取对应的mysql镜像,注意如果不标注tag(版本号等),会默认使用lastest(最新版)这个版本
docekr pull mysql:5.6
2.创建mysql容器
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=xy123456 --name xy_mysql mysql:5.6
参数说明:
- -d 让容器在后台运行,如果没有这个条件,会在终端展示mysql加载过程,而且无法进行操作(在另一个终端查看,会发现mysql的容器正在运行中,关闭原来的终端,该容器并不会随之关闭)
- -p 添加主机到容器的端口映射,3306是容器内mysql默认使用的端口号
- -e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置,如果没有设置容器会被自动关停
- –name 容器的名字,容器名必须唯一
3.进入mysql容器
容器启动后,我们可以进入运行中的容器查看mysql的相关文件
docker exec -ti xy_mysql /bin/bash
参数说明:
- -t 在容器里生产一个伪终端
- -i 对容器内的标准输入 (STDIN) 进行交互
- exit命令是离开并关闭容器,但是由于容器还有任务所以不会关停
安装PHP
1.PHP镜像拉取
docker pull php:7.0-fpm
2.创建PHP容器
docker run -d -v /var/nginx/www/html:/var/www/html -p 9000:9000 --link xy_mysql:mysql --name xy_phpfpm php:fpm
参数说明:
- -p 添加主机到容器的端口映射,设定php使用9000端口
- -v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的,主机上的路径如果不存在,也会自动生成
- –link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务
3.创建文件
这时我们可以不进入容器内增加文件,而是可以在主机的挂载目录下添加文件
在/var/nginx/www/html目录下新建index.php文件
vim index.php
写入内容作为测试
因为docker需要在最高权限下运行,所有在主机上创建的目录需要最高权限访问
<?php phpinfo() ?>
安装nignx
1.nginx镜像拉取
这里拉取的就是最新版
docker pull nginx
2.创建nginx工具人容器
docker run -d -p 80:80 \
--link xy_phpfpm:phpfpm --name xy_nginx nginx
参数说明:
创建一个无挂载的容器,方便下一步提取出配置文件(如果挂载了,会导致复制配置文件时,一直与容器同步)
3.复制配置文件
容器的挂载只限于目录,如果直接挂载文件,其仍作为目录被处理
要实现文件同步,我们必须要先从容器中复制出一份配置文件(如果是直接新建一个,挂载时主机上的空白文件会同步到容器中)
docker cp xy_nginx:/etc/nginx/nginx.conf /var/nginx/nginx.conf
docker cp xy_nginx:/etc/nginx/conf.d/default.conf /var/nginx/conf.d/
参数说明:
- docker cp 原路径:转移路径
- 容器的路径用:
容器名:容器内文件路径
表示 - cp时路径上的目录必须存在(而挂载时,主机会自动创建不存在的目录)
4.创建nginx挂载容器
先把充当工具人的nginx容器删除
docker rm -f xy_nginx
重新创建一个带挂载的nginx容器
docker run -d -p 80:80 \
-v /var/nginx/nginx.conf:/ect/nginx/nginx.conf\
-v /var/nginx/conf.d/default.conf:/ect/nginx/conf.d/default.conf\
-v /var/nginx/www/html:/var/www/html\
--link xy_phpfpm:phpfpm --name xy_nginx nginx
参数说明:
- -p 添加主机到容器的端口映射,nginx默认使用80端口,也是网页范围默认使用的端口
- -v 挂载了三个文件到本地,其中
/var/nginx/nginx.conf
和/var/nginx/conf.d/default.conf
在本地同步了nginx两个重要的配置文件,/var/www/html
则同步了nginx网页展示文件 - 挂载时应该要保持最后一个文件相同
5.修改配置文件
修改nginx的配置文件让其监听php,这里可以直接在主机修改配置文件
主机:/var/nginx/conf.d/default.conf
容器:/ect/nginx/conf.d/default.conf
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root /var/www/html;
fastcgi_pass 172.17.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
内容解析:
- root为文件php根目录,所以修改为
/var/www/html
- fastcgi_pass 修改为
本地ip地址:php端口
,注意使用回环地址也是不允许的 - fastcgi_index为默认访问的页面
- fastcgi_param应该改为 d o c u m e n t r o o t document_root documentrootfastcgi_script_name才能准确找到位置
6.配置出错处理方法
当配置文件出错时,容器将无法运行
- 先查看日志,查找出错的地方
docker logs xy_nginx
- 由于容器没有启动,我们无法直接进入容器修改,所以需要用docker cp下载出问题的文件,然后再通过cp覆盖问题文件
- 如果该出错文件有挂载,在本地修改即可