香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > 服务器资讯 >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

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


时间:2020-10-27 10:57 作者:admin


DNMP介绍

DNMP(Docker + Nginx + mysql/' target='_blank'>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数据、配置文件、日志文件都可在Host中直接修改查看 内置完整PHP扩展安装命令 默认支持pdo_mysqlmysqlimbstringgdcurlopcache等常用热门扩展,根据环境灵活配置 可一键选配常用服务:
    多PHP版本:PHP5.4、PHP5.6、PHP7.1-7.3 Web服务:Nginx、Openresty 数据库:MySQL5、MySQL8、Redis、memcached、MongoDB、ElasticSearch 消息队列:RabbitMQ 辅助工具:Kibana、Logstash、phpMyAdmin、phpRedisAdmin、AdminMongo 实际项目中应用,确保100%可用 所有镜像源于Docker官方仓库,安全可靠 一次配置,Windows、Linux、MacOs皆可用 支持快速安装扩展命令install-php-extensions apcu 具体使用文档可参考: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服务function getMysqlVersion(){  if (extension_loaded('PDO_MYSQL')) {    try {      $dbh = new PDO('mysql:host=192.168.2.103;dbname=mysql', 'root', '123456');      $sth = $dbh->query('SELECT VERSION() as version');      $info = $sth->fetch();    } catch (PDOException $e) {      return $e->getMessage();    }    return $info['version'];  } else {    return 'PDO_MYSQL 扩展未安装 ×';  }}

我们只需要修改为如下代码:

// 检测MySQL服务function getMysqlVersion(){  if (extension_loaded('PDO_MYSQL')) {    try {      $dbh = new PDO('mysql:host=192.168.2.103;port=3305;dbname=mysql', 'root', '123456');      $sth = $dbh->query('SELECT VERSION() as version');      $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的error,access等相关日志文件,同样的是在NGINX容器中映射到宿主机的。

3.这里的www就是程序源码路径,我们的所有程序源码都放在这里即可。

对于NGINX域名配置文件,推荐进入到容器进行编写,而不是通过在宿主机进行编写。

第一步:进入我们的www目录,安装一个应用程序。这里推荐使用compser来安装,对于composer的使用,也可以参考文档进行简单配置即可使用。

ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  composer create-project topthink/think=5.1.35 tp5Creating a "topthink/think=5.1.35" project at "./tp5"Installing topthink/think (v5.1.35) - Installing topthink/think (v5.1.35): Loading from cacheCreated project in /app/tp5Loading composer repositories with package informationUpdating dependencies (including require-dev)Package operations: 2 installs, 0 updates, 0 removals - Installing topthink/think-installer (v2.0.0): Loading from cache - Installing topthink/framework (v5.1.39): Loading from cacheWriting lock fileGenerating autoload files ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  lltotal 0drwxr-xr-x  3 ert staff  96B 9 6 22:02 localhostdrwxr-xr-x 19 ert staff  608B 9 8 22:26 tp5

这样本地就按照好了一个tp5的框架了。第二步:进入NGINX容器,通过docker ps查看docker容器的container-id,使用docker exec命令进入到容器内部。

ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  docker psCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS                   NAMES0f5f9cd08aa2    dnmp_php      "docker-php-entrypoi…"  27 hours ago    Up About an hour  9000/tcp, 9501/tcp             php8bc44fc8c578    dnmp_nginx     "/docker-entrypoint.…"  27 hours ago    Up 26 hours     0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp  nginxf02ad53bf14d    mysql:5.7.28    "docker-entrypoint.s…"  27 hours ago    Up 26 hours     33060/tcp, 0.0.0.0:3305->3306/tcp     mysql5 ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  docker exec -it 8bc44fc8c578 /bin/sh/www # lslocalhost tp5

进入NGINX配置文件路径

/ # cd /etc/nginx//etc/nginx # ls -latotal 60drwxr-xr-x  1 root   root     4096 Sep 8 20:23 .drwxr-xr-x  1 root   root     4096 Sep 7 19:34 ..drwxr-xr-x  5 root   root      160 Sep 8 20:05 conf.d-rw-r--r--  1 root   root      429 Sep 6 22:02 fastcgi-php.conf-rw-r--r--  1 root   root     1077 Jul 8 00:14 fastcgi.conf-rw-r--r--  1 root   root     1062 Sep 6 22:02 fastcgi_params-rw-r--r--  1 root   root     2837 Jul 8 00:14 koi-utf-rw-r--r--  1 root   root     2223 Jul 8 00:14 koi-win-rw-r--r--  1 root   root     5231 Jul 8 00:14 mime.typeslrwxrwxrwx  1 root   root      22 Jul 11 04:27 modules -> /usr/lib/nginx/modules-rw-r--r--  1 root   root      760 Sep 6 22:02 nginx.confdrwxr-xr-x  2 root   root     4096 Sep 8 20:23 rewrite-rw-r--r--  1 root   root      636 Jul 8 00:14 scgi_params-rw-r--r--  1 root   root      664 Jul 8 00:14 uwsgi_params-rw-r--r--  1 root   root     3610 Jul 8 00:14 win-utf

conf.d就是我们的域名配置路径,nginx就是默认的配置文件。

创建一个域名配置文件。

/etc/nginx # cd conf.d/ && touch tp5.conf/etc/nginx/conf.d # ls -latotal 16drwxr-xr-x  5 root   root      160 Sep 8 20:05 .drwxr-xr-x  1 root   root     4096 Sep 8 20:23 ..-rw-r--r--  1 root   root      48 Sep 6 22:02 .gitignore-rw-r--r--  1 root   root     2254 Sep 6 22:02 localhost.conf-rw-r--r--  1 root   root      505 Sep 8 20:29 tp5.conf

配置tp5.conf文件。复制如下内容:

server {  listen 80;  server_name tp5.com;  root /www/tp5/public;  index index.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项目,直接引入即可。  include rewrite/thinkphp.conf;  location ~ \.php$ {      # 这里的php是php容器的名称,可以改为实际的ip,不建议使用,因为ip会变化。      fastcgi_pass  php:9000;      include     fastcgi-php.conf;      fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;      include     fastcgi_params;    }}

测试域名配置,并重启NGINX服务。

/etc/nginx/conf.d # nginx -t && nginx -s reloadnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful/etc/nginx/conf.d #

将域名添加到宿主机的host文件。

访问测试

PHP扩展安装

在搭建docker环境时,PHP的Redis扩展默认是没安装,这里就以Redis扩展为例。

由于内置了部分扩展(具体有哪些扩展,参考上面提到的使用文档),因此直接使用命令安装即可。

install-php-extensions redis

测试扩展

/www # php --ri redisredisRedis Support => enabledRedis Version => 5.3.1......

总结

到此这篇关于使用docker搭建一套开发环境全家桶的文章就介绍到这了,更多相关docker搭建开发环境全家桶内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)