没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。
最近一直在研究docker。爬过好多坑。现在再看docker 感觉比一开始了解了一些docker了。于是尝试用docker容器去搭建一套开发环境。这套开发环境我打算分3篇文章去写完成一台服务器模拟多台服务器的工作原理。
第一篇 —— 利用docker容器搭建php开发环境
第二篇 —— 如何利用docker 做负载均衡、和集群。
第三篇 —— 搭建 mysql 的主从 以及数据库配置。
搭建php的开发环境一般用到的是LAMP 也就是 Linux + Apache + Mysql + Php 的开发环境。 虽然 Apache 解析 php 的能力还是比较强的,但是每一个用户请求都会占用一个进程。这样一来 Apache 非常吃内存开销。导致apach的并发连接数并不是很高。所以我并不使用 Apache 来构建php的开发环境 。我所要搭建的php开发环境是 Lnmp 架构的 php 开发环境。也就是 Linux + Nginx + Mysql + Php。 其中的不同是采用比较先进的 Nginx 作为反向代理服务器。 通过php 的 fastcgi 方式去和php主程序去交互。这样的好处是可以支持更多的并发连接数量。具体想知道nginx 的运行原理的话自己百度吧。百度一大堆我就不多描述了。
如果你还没有安装好docker 请先在服务器上把docker安装上。
1.下载 php 官方镜像以及制定的标签 (听说鸟哥发布了php7 😄 就用了)
docker pull php:7-fpm
2.用php镜像创建一个交互式容器并进入该容器
docker run -it --name myphp7 php:7-fpm
3.为php打入想要加入的扩展 (以 iconv mcrypt gd 扩展为例子)
1 |
|
4.退出该容器
exit
5.将该容器制作成镜像(当然也可以使用dockerFile的方式去构建镜像。这个以后说吧。自己还没搞懂了。😂)
docker commit -a "xyz" -m "install more PHP extensions" xyzphp/php7-fpm myphp7
6.以守护进程方式运行 xyzphp/php7-fpm 的镜像容器
docker run -it -p 9000 -v /data:/data --name php7-fpm xyzphp/php7-fpm php-fpm
7.在宿主机上安装 nginx
apt-get install nginx
8.查看容器映射端口号
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9d679b8a86a xyzphp/php7-fpm "php-fpm" 17 hours ago Up 10 seconds 0.0.0.0:32777->9000/tcp php-fpm
9.编辑配置nginx配置文件 通过(127.0.0.1:32777) 的fastcgi去解析php文件
vim /etc/nginx/conf.d/test.conf
1 | server { |
10.到/data/php7 目录下编写php文件
echo "<?php phpinfo();?>" > index.php
11.浏览器访问 http://wiki.xyzphp.com
哈哈 docker 运行的php7环境已搭建完成。好开心啊 可以玩php7 如果不想玩直接把这个容器删掉。应为你已经生成好一个docker镜像了。所以你可以生成多个容器。一行命令瞬间创建。感觉真的很爽 😄👻