本文主要介绍利用docker构建一套开发环境familybucket。这篇文章给你做了非常详细的介绍,对你的学习或者工作有一定的参考价值。有需要的朋友可以参考一下。
DNMP简介
DNMP(Docker+nginx+MySQL+PHP7/5+Redis)是一款功能齐全的LNMP一键安装程序。支持的服务丰富、强大、易于使用,并且兼容多种平台。是适合多端docker开发生产环境的PHP环境全家桶。
DNMP项目特色:
1.修复MySQL无法连接的问题。
2.配置NGINX虚拟域名。
3.安装PHP扩展。
因为打算持续使用这个包做自己的开发环境,所以后面会总结不同的问题,在原主人仓库的基础上迭代更新。欢迎关注。二号公众卡技术圈
修改MySQL连接问题
安装dnmp时,它将本地端口3305映射到MySQL容器的端口3306,所以我们需要连接端口3305。
在示例代码的www目录下,有一个localhost目录,我们找到一段测试MySQL的代码,如下:
//检测MySQL服务 functiongetMysqlVersion() { if(extension_loaded('PDO_MYSQL')){ try{ $dbh=newPDO('mysql:host=192.168.2.103;dbname=mysql','root','123456'); $sth=$dbh->query('SELECTVERSION()asversion'); $info=$sth->fetch(); }catch(PDOException$e){ return$e->getMessage(); } return$info['version']; }else{ return'PDO_MYSQL扩展未安装×'; } }我们只需要将其修改为以下代码:
//检测MySQL服务 functiongetMysqlVersion() { if(extension_loaded('PDO_MYSQL')){ try{ $dbh=newPDO('mysql:host=192.168.2.103;port=3305;dbname=mysql','root','123456'); $sth=$dbh->query('SELECTVERSION()asversion'); $info=$sth->fetch(); }catch(PDOException$e){ return$e->getMessage(); } return$info['version']; }else{ return'PDO_MYSQL扩展未安装×'; } }这里的192.168.2.103是我们主机的ip,根据你的实际情况填写即可。可以通过ifconfig查看。如果是Windows系统,使用ipconfig查看。
ifconfig配置NGINX域名
在配置之前,我们需要澄清几件事。我们的源目录位置、NGINX配置文件位置和NGINX日志文件位置。特别说明:
1.从截图中我们可以看到,conf.d目录下有两个配置文件。这些是我事先配置好的域名文件。这个文件通过NGINX容器映射到本地磁盘。所以可以通过主机查看。
2.logs文件是NGINX的错误和访问等相关日志文件,也映射到NGINX容器中的主机。
3.www这里是程序源代码的路径,我们所有的程序源代码都可以放在这里。
对于NGINX域名配置文件,建议进入容器写,而不是通过主机写。
第一步:进入我们的www目录并安装一个应用程序。建议在此安装Compser。对于composer,也可以参考文档进行简单配置。
ert@ertiaodeMac-mini~/develop/env/dnmp/wwwmaster●composercreate-projecttopthink/think=5.1.35tp5 Creatinga"topthink/think=5.1.35"projectat"./tp5" Installingtopthink/think(v5.1.35) -Installingtopthink/think(v5.1.35):Loadingfromcache Createdprojectin/app/tp5 Loadingcomposerrepositorieswithpackageinformation Updatingdependencies(includingrequire-dev) Packageoperations:2installs,0updates,0removals -Installingtopthink/think-installer(v2.0.0):Loadingfromcache -Installingtopthink/framework(v5.1.39):Loadingfromcache Writinglockfile Generatingautoloadfiles ert@ertiaodeMac-mini~/develop/env/dnmp/wwwmaster●ll total0 drwxr-xr-x3ertstaff96B9622:02localhost drwxr-xr-x19ertstaff608B9822:26tp5这样,在当地建立了一个tp5框架。第二步:进入NGINX容器,通过dockerps检查docker容器的container-id,使用dockerexec命令进入容器。
ert@ertiaodeMac-mini~/develop/env/dnmp/wwwmaster●dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 0f5f9cd08aa2dnmp_php"docker-php-entrypoi…"27hoursagoUpAboutanhour9000/tcp,9501/tcpphp 8bc44fc8c578dnmp_nginx"/docker-entrypoint.…"27hoursagoUp26hours0.0.0.0:80->80/tcp,0.0.0.0:443->443/tcpnginx f02ad53bf14dmysql:5.7.28"docker-entrypoint.s…"27hoursagoUp26hours33060/tcp,0.0.0.0:3305->3306/tcpmysql5 ert@ertiaodeMac-mini~/develop/env/dnmp/wwwmaster●dockerexec-it8bc44fc8c578/bin/sh /www#ls localhosttp5输入NGINX配置文件路径
/#cd/etc/nginx/ /etc/nginx#ls-la total60 drwxr-xr-x1rootroot4096Sep820:23. drwxr-xr-x1rootroot4096Sep719:34.. drwxr-xr-x5rootroot160Sep820:05conf.d -rw-r--r--1rootroot429Sep622:02fastcgi-php.conf -rw-r--r--1rootroot1077Jul800:14fastcgi.conf -rw-r--r--1rootroot1062Sep622:02fastcgi_params -rw-r--r--1rootroot2837Jul800:14koi-utf -rw-r--r--1rootroot2223Jul800:14koi-win -rw-r--r--1rootroot5231Jul800:14mime.types lrwxrwxrwx1rootroot22Jul1104:27modules->/usr/lib/nginx/modules -rw-r--r--1rootroot760Sep622:02nginx.conf drwxr-xr-x2rootroot4096Sep820:23rewrite -rw-r--r--1rootroot636Jul800:14scgi_params -rw-r--r--1rootroot664Jul800:14uwsgi_params -rw-r--r--1rootroot3610Jul800:14win-utfConf.d是我们的域名配置路径,nginx是默认的配置文件。
创建域名配置文件。
/etc/nginx#cdconf.d/&&touchtp5.conf /etc/nginx/conf.d#ls-la total16 drwxr-xr-x5rootroot160Sep820:05. drwxr-xr-x1rootroot4096Sep820:23.. -rw-r--r--1rootroot48Sep622:02.gitignore -rw-r--r--1rootroot2254Sep622:02localhost.conf -rw-r--r--1rootroot505Sep820:29tp5.conf配置tp5.conf文件。复制以下内容:
server{ listen80; server_nametp5.com; root/www/tp5/public; indexindex.php; #NGINX日志文件,如果是其他的域名,直接替换nginx.tp5.com.xx.log文件名称即可。 access_log/var/log/nginx/nginx.tp5.com.access.log; error_log/var/log/nginx/nginx.tp5.com.error.log; #thinkphp5的url重写文件,避免重复编写,单独放一个文件,以后其他的thinkphp项目,直接引入即可。 includerewrite/thinkphp.conf; location~\.php${ #这里的php是php容器的名称,可以改为实际的ip,不建议使用,因为ip会变化。 fastcgi_passphp:9000; includefastcgi-php.conf; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; includefastcgi_params; } }测试域名配置并重启NGINX服务。
/etc/nginx/conf.d#nginx-t&&nginx-sreload nginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisok nginx:configurationfile/etc/nginx/nginx.conftestissuccessful /etc/nginx/conf.d#将域名添加到主机的主机文件中。
访问测试
PHP扩展安装
在构建docker环境时,PHP的Redis扩展是默认不安装的。这里以Redis扩展为例。
由于有一些内置的扩展(具体扩展请参考上述用户文档),您可以使用命令直接安装它们。
install-php-extensionsredis测试扩展
/www#php--riredis redis RedisSupport=>enabled RedisVersion=>5.3.1 ......摘要
关于使用docker构建一个全家桶开发环境的这篇文章到此为止。要了解更多关于docker构建全家桶开发环境的信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)