使用docker搭建一套开发环境全家桶的详细教程

使用docker搭建一套开发环境全家桶的详细教程,第1张

使用docker搭建一套开发环境全家桶的详细教程

本文主要介绍利用docker构建一套开发环境familybucket。这篇文章给你做了非常详细的介绍,对你的学习或者工作有一定的参考价值。有需要的朋友可以参考一下。

DNMP简介

DNMP(Docker+nginx+MySQL+PHP7/5+Redis)是一款功能齐全的LNMP一键安装程序。支持的服务丰富、强大、易于使用,并且兼容多种平台。是适合多端docker开发生产环境的PHP环境全家桶。

DNMP项目特色:

  • 100%开源
  • 100%符合Docker标准
  • 支持多个版本PHP共存,可以随意切换(PHP5.4,PHP5.6,PHP7.1,PHP7.2,PHP7.3)
  • 支持绑定任意数量的域名
  • HTTPS和HTTP/2
  • PHP源代码、MySQL数据、配置文件和日志文件都可以在主机中直接修改和查看。
  • 内置完整的PHP扩展安装命令
  • 默认支持pdo_mysql、mysqli、mbstring、gd、curl、opcache等常见的流行扩展,可以根据环境灵活配置。
  • 一键式可选通用服务:
  • 多个PHP版本:PHP5.4、PHP5.6、PHP7.1-7.3
  • 服务:Nginx、Openresty
  • 数据库:MySQL5,MySQL8,Redis,memcached,MongoDB,ElasticSearch
  • 消息:RabbitMQ
  • 辅助工具:Kibana、Logstash、phpMyAdmin、phpRedisAdmin、AdminMongo
  • 在实际项目中的应用,确保100%的可用性。
  • 所有图片均来自Docker官方仓库,安全可靠。
  • 配置好之后,Windows、Linux、MacOs都可以使用。
  • 支持快速安装扩展命令install-php-extensionsapcu
  • 具体文件请参考:https://gitee.com/bruce_qiq/dnmp/blob/master/README.md。文档里已经有明确的教程了。接下来我就简单演示一下安装后的一些基本 *** 作,因为有些 *** 作在源码文档中不是很详细,有明显的漏洞。记录几个主要功能:
  • 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/wwwmaster●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/wwwmaster●ll total0 drwxr-xr-x3ertstaff96B9622:02localhost drwxr-xr-x19ertstaff608B9822:26tp5

    这样,在当地建立了一个tp5框架。第二步:进入NGINX容器,通过dockerps检查docker容器的container-id,使用dockerexec命令进入容器。

    ert@ertiaodeMac-mini~/develop/env/dnmp/wwwmaster●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/wwwmaster●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-utf

    Conf.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构建全家桶开发环境的信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/774362.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存