使用docker搭建灵活的线上php环境 有时候你可能不太需要一些别人已经集成了的包或者镜像
我们就可以使用以下方式自己动手逐一构建自己所需要的环境结构 并在最后实现一键自动化部署
一步一步点亮docker技能树
## .
## ## ## ==
## ## ## ## ## ===
/""""""""""""""""".__/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
._____ o __/
. . __/
.___.______/
* 首先 clone [server] 项目 放到服务器根目录(到后面你也可以构建自己风格的环境结构)
(一阶) 使用 docker 逐一构建
1. 下载镜像
docker pull php:7.2-fpm
冒号后选择版本
docker pull nginx
docker pull mysql:5.7
不需要本地数据库可忽略
docker pull redis:3.2
不需要本地 redis 可忽略
docker images
查看已下载的所有镜像
2. 下载完成镜像后运行容器 [以下采用 --link 方式创建容器 注意创建顺序]
注:
-i 表示允许我们对容器进行操作
-t 表示在新容器内指定一个为终端
-d 表示容器在后台执行
/bin/bash 这将在容器内启动bash shell
-p 为容器和宿主机创建端口映射
--name 为容器指定一个名字
-v 将容器内路径挂载到宿主机路径
--privileged=true 给容器特权,在挂载目录后容器可以访问目录以下的文件或者目录
--link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,解除了容器之间通信对容器IP的依赖
<运行 mysql 容器>
docker run --name mydb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
注:-MYSQL_ROOT_PASSWORD=123456 给mysql设置初始密码
如果不需要搭建本地数据库直接下一步
<运行 redis 容器>
docker run --name myredis -p 6379:6379 -d redis:3.2
注: 如果不需要搭建本地redis直接下一步
<运行 php 容器>
docker run -d -p 9000:9000 --name myphp -v /server/www:/var/www/html -v /server/php:/usr/local
/etc/php --link mydb:mydb --link myredis:myredis --privileged=true php:7.2-fpm
注: 如果不需要搭建本地数据库或者redis可以省去--link mydb:mydb --link myredis:myredis 注意-v 挂载一个空文件夹是会覆盖容器中的内容,所以配置文件要事先准备好
<运行 nginx 容器>
docker run --name mynginx -d -p 80:80 -v /server/www:/usr/share/nginx/html -v /server/nginx:
/etc/nginx -v /server/logs/nginx.logs:/var/log/nginx --link myphp:myphp --privileged=true nginx
注:
-v语句冒号后是容器内的路径 我将nginx的网页项目目录 配置目录 日志目录分别挂载到了我事先准备好的/server目录下
--link myphp:myphp 将nginx容器和php容器连接 通过别名myphp就不再需要去指定myphp容器的ip了