的开篇介绍了最近[20200302]基于dnmp的二次改进和补充,一个phperdocker开发环境phper-dockerdockerphp环境模型docker介绍他们可以打包他们的应用和dependencies放入一个可移植的容器中,然后分发到任何流行的Linux机器上,还可以实现虚拟化。容器是完全使用沙盒机制,它们之间不会有接口。安装#windowdemo需要安装dockertoolbox#https://docs.docker.com/toolbox/toolbox_install_windows/#接下来一路安装,如果之前安装过git和virtualbox,勾选没有的dockermanagement需要再安装Kitematic(Alpha)gui。DockerQuickstartTerminaldockerterminalOracleVMVirtualBox虚拟机gitbash配置环境#如果你有,则不需要添加\启动泊坞窗终端##。######==########===/""""""""""""""""\___/===~~~{~~~~~~~~~~~~~~~~~/===-~~~\______o__/\__/\____\_______/docker配置为使用IP为192.168.99.100的默认机器如需入门帮助,请ckoutthedocsathttps://docs.docker.comStartinteractiveshellqkl@qkl-PCMINGW64/d/docker/DockerToolbox#/d/docker/DockerToolbox是我安装DockerToolbox的目录拉取centos镜像dockerpullcentos#version->latestdockerpullcentos:6.8#version->6.8查看镜像dockerimagelscreatecontainer#这里注意带上-it-d参数和后面的/bin/bash命令,否则容器会停止直接启动dockercreate-it--namecentos-demo-1centos:latest/bin/bash#output:0004b4dff60db4ba3dd62d6b1ba70dfc4a6f07fb3c264aecd8933b82c00e3查看容器dockerps-a#output:CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES0004b4dff60dcentos:latest"/bin/bash"大约一分钟前Createdcentos-demo-1进入容器dockerstartcentos-demo-1dockerattach1#进入centos-demo-1终端psaux|grepinitexit#现在检查容器状态dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES0004b4dff60dcentos:latest"/bin/bash"3minutesagoExited(0)3secondsagocentos-demo-1#hasexited,andexitin附加将停止容器。接下来我们将使用run直接通过镜像运行容器来删除容器。#提醒删除前必须停止容器,#dockerrm容器id,其中容器id可以是id前几位不允许完全指定dockerrm0004b4dff60drun来创建和运行容器dockerimagels#--rm表示停止后自动删除容器(此命令不能与-d命令一起使用)dockerrun--rm-it--namecentos-demo-2image_id/bin/bash进入容器dockerexec--itcontainer_id/bin/bash#获取容器的控制台psauxapt-getupdateapt-getinstallmxut更多参考本文-docker命令详解(介绍的基本够详细了)PHP环境部署PHP#Deployphp5.6dockerpullphp:5.6dockerrun-d--namephpfpm-demo-p9000:9000-v/web/www/demo:/web/www/demophp:5.6dockerexec-itcontainer_id/bin/bashapt-getupdate#安装php扩展#我就不演示怎么安装了,基本都是phpize->configure->make&&makeinstallredismongoddbrdkafka(安装前先安装librdkafka-https://github.com/edenhill/librdkafka)zookeeper(安装一线安装zookeker的C库支持)打包导出php容器dockercommit-a"qklin"-m"myphp5.6demo"container_idphp:demo1dockerimagels#outputREPOSITORYTAGIMAGEIDCREATEDSIZEphpdemo1bd5f1afdb9723秒前MB#packagedockersavephp:demo1>php-demo1.tarnginxdockerpullnginxdockerrun-it-d--namenginx-demo-p8088:80-v/web/www/demo:/web/www/demonginx#curl复制代码http://192.168.99.100:8088访问dockerexec-itcontainer_id/bin/bashapt-getupdateapt-getinstall-yvimapt-getinstall-ynet-tools#ifconfigroutenetstatarp等命令apt-getinstall-yiproute2#ip命令apt-getinstall-yinetutils-ping#ping命令apt-getinstall-yprocps#ps命令apt-getinstall-yhtop#htop命令可以代替top命令#以下容器/etc的bashvim/nginx/nginx.confusernginx;worker_processes1;error_log/var/log/nginx/error.logwarn;pid/var/run/nginx.pid;events{worker_connections1024;}http{include/etc/nginx/mime.类型;default_type应用程序/八位字节流;log_formatmain'$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';access_log/var/log/nginx/access.logmain;发送文件;#tcp_nopush上;keepalive_timeout65;#gzip上;#新增此行include/etc/nginx/custom.d/*.conf;包括/etc/nginx/conf.d/*.conf;}nginx-demo.confserver{listen80;server_nametest.qkl.local;#charsetkoi8-r;access_log/var/log/nginx/test.access.logmain;error_log/var/log/nginx/test.error.log错误;位置/{root/web/www/demo/src;indexindex.phpindex.htmlindex.htm;}#error_page404/404.html;#将服务器错误页面重定向到静态页面/50x.html#error_page500502503504/50x.html;location=/50x.html{root/usr/share/nginx/html;}#将PHP脚本代理到侦听127.0.0.1:80的Apache##location~\.php${#proxy_passhttp://127.0.0.1;#}#将PHP脚本传递给监听127.0.0.1:9000的FastCGI服务器#location~\.php${root/web/www/demo/src;#注意这里必须和nginxfastcgi_pass的位置一致phpfpm-demo:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;包括fastcgi_params;}#拒绝访问.htaccess文件,如果Apache的文档根#与nginx的根一致##location~/\.ht{#denyall;#}}packageandexportnginxcontainerdockercommit-a"qklin"-m"mynginxdemo"container_idnginx:demo1#packagedockersavenginx:demo1>nginx-demo1.tarshareanduse分享的php和nginx镜像链接本教程:https://pan.baidu.com/s/1HR0g5kfwObY8zdESYCmRtA密码:6666importmirrordockerload
