中国领先的IT技术网站
|
|

DNMP架构使用与未来

第一次了解到docker是在一个同事的耳朵里,我一开始觉得这个玩意儿是啥,听说是一门新技术,我思考了一下,近几年新技术层出不穷,按照我对新技术的态度,一直都是,如果对我的开发有较快速的提升,我一般就会使用,恰恰好,docker就是这么一门提升速度的技术。

作者:佚名来源:wow0|2017-12-05 10:29

开发者大赛路演 | 12月16日,技术创新,北京不见不散


 前言

讲完了知乎live,心里的石头总算是落地了,第一次讲live,比较尴尬的是问问题的人比较少,都是我一人的自言自语,讲的内容很多,也很杂,不过已经基本上囊括了自学上大部分的路径与架构,很感谢参加的同学,希望有机会我们多多交流。

关于docker

第一次了解到docker是在一个同事的耳朵里,我一开始觉得这个玩意儿是啥,听说是一门新技术,我思考了一下,近几年新技术层出不穷,按照我对新技术的态度,一直都是,如果对我的开发有较快速的提升,我一般就会使用,恰恰好,docker就是这么一门提升速度的技术。

docker的架构

这是一张在搜集资料的时候看到的图,很经典

docker+nginx+mysql+php

镜像(类似于安装包的存在)

  1. docker pull mysql:5.6  
  2. docker pull php:7.0-fpm  
  3. docker pull ngixn:1.10.3 

加载完毕以后,可以使用 docker images 查看当前加载的镜像,也可以使用 docker rmi xxID 删除镜像

容器(类似于文件目录,但是每一个都是独立)

容器的设定非常经典,把所有的模块当作封闭的系统来看待,只是用ip进行通讯,按照web的说法就是,高内聚低耦合,非常适合于快速开发

  1. 新建并启动容器 
  2. docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=xy123456 --name xy_mysql mysql:5.6 
  3.  
  4. docker run -d -v /var/nginx/www/html:/var/www/html -p 9000:9000 --link xy_mysql:mysql --name xy_phpfpm php:7.0-fpm  
  5.  
  6. docker run -d -p 80:80 --name xy_nginx  
  7. -v /var/nginx/www/html:/var/www/html --link xy_phpfpm:phpfpm  
  8.  -v /etc/docker/myNginx/nginx.conf:/etc/nginx/nginx.conf:ro    
  9.   -v /etc/docker/myNginx/conf.d:/etc/nginx/conf.d  
  10.  
  11. --name xy_nginx nginx:1.10.3 
  12.  
  13. 记住,顺序不能乱,因为链接是一块接另一块,坏了其中一块,则无法正常运行 

记住,顺序不能乱,因为链接是一块接另一块,坏了其中一块,则无法正常运行

注意

  • 第一个“-v”,是项目位置,把项目放到挂载到的目录下即可;
  • 第二个“-v”,是挂载的主配置文件”nginx.conf”,注意”nginx.conf”文件内有一行”include /etc/nginx/conf.d/*.conf;”,这个include指向了子配置文件的路径,此处注意include后所跟的路径一定不要出错。
  • 第三个“-v”,把docker内子配置文件的路径也挂载了出来,注意要与(2)中include指向路径一致
  • 重点强调一下,nginx.conf是挂载了一个文件(docker是不推荐这样用的),conf.d挂载的是一个目录
  • 执行最后一个run的时候,本地目录必须存在已经配置好的配置文件,否则运行nginx会失败
  • 参数说明
  • -d 让容器在后台运行
  • -p 添加主机到容器的端口映射
  • -v 添加目录映射,这里最好nginx容器的根目录最好写成和php容器中根目录一样。但是不一点非要一模一样,如果不一样在配置nginx的时候需要注意
  • –name 容器的名字
  • –link 与另外一个容器建立起联系

容器基本操作

  1. docker stop xxxID 
  2. docker start xxxID 
  3. docker restart xxxID 
  4. docker ps -a 查看所有运行的容器 
  5. docker exec -ti xxID/Name /bin/bash 进入容器(系统内核为linux) 

特殊操作

  1. docker-php-ext-install pdo_mysql 安装php模块 
  2. docker inspect (id/name) | grep "IPAddress" 查看某一个id的ip 
  3. docker exec -it (id/name) nginx -s reload 重新生效配置 

后记

docker作为一门新技术,很好的改善了,传统开发过程中,每个人的环境都有区别,导致同一个项目跑不同的电脑就是很烦人,往往很容易出现崩盘的情况,测试环境和线上环境的差距,导致很难同步,但是有了docker以后,一切都变得轻松清爽了,这是一门非常值得掌握的技术,至少它能立竿见影加快团队的开发,这是非常值得普及的一门技术。

nginx中 default.conf 配置

  1. server {   
  2.     listen       80;   
  3.     server_name  localhost;   
  4.    
  5.   
  6.     error_page   500 502 503 504  /50x.html;   
  7.     location = /50x.html {   
  8.         root   /usr/share/nginx/html;   
  9.     }   
  10.    
  11.     # proxy the PHP scripts to Apache listening on 127.0.0.1:80   
  12.     #   
  13.     #location ~ \.php$ {   
  14.     #    proxy_pass   http://127.0.0.1;   
  15.     #}   
  16.    
  17.     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000   
  18.        
  19.     #location ~ \.php$ {   
  20.     #     root           /var/www/html;   
  21.     #     fastcgi_pass   172.17.0.3:9000;   
  22.     #     fastcgi_index  index.php;   
  23.     #     fastcgi_param  SCRIPT_FILENAME $document_root$fastcdi_script_name; 
  24.     #     include        fastcgi_params;   
  25.     # } 
  26.    
  27.     location ~ \.php$ { 
  28.        fastcgi_pass   172.17.0.3:9000; 
  29.        fastcgi_index  index.php; 
  30.        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name; 
  31.        fastcgi_param  SCRIPT_NAME      $fastcgi_script_name; 
  32.        include        fastcgi_params; 
  33.     } 
  34.     # deny access to .htaccess files, if Apache's document root   
  35.     # concurs with nginx's one   
  36.     #   
  37.     #location ~ /\.ht {   
  38.     #    deny  all;   
  39.     #}   

【编辑推荐】

  1. 《王者荣耀》打团不掉帧、不卡顿的架构方式和实现原理
  2. 到底孰优孰劣?Dubbo和Spring Cloud微服务架构终极对决!
  3. 探讨核心技术与应用场景!京东11.11基础架构峰会在京召开
  4. 读懂谷歌SDN架构 应用优化驱动为魂!
  5. “爆款”游戏吃鸡是如何诞生的?聊聊游戏服务器的架构演进
【责任编辑:武晓燕 TEL:(010)68476606】


点赞 0
分享:
大家都在看
猜你喜欢

视频课程+更多

热门职位+更多

读 书 +更多

网络系统开发实例精粹(JSP版)

《网络系统开发实例精粹》以实际的软件开发项目实例介绍贯穿始末,逐层深入的介绍了应用JSP开发Web应用程序的详细过程。全书以深透软件工程...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊