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

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数据、配置文件、日志文件都可在Host中直接修改查看
  • 内置完整PHP扩展安装命令
  • 默认支持 pdo_mysql、 mysqli、 mbstring、 gd、 curl、 opcache等常用热门扩展,根据环境灵活配置
  • 可一键选配常用服务:
  1. 多PHP版本:PHP5.4、PHP5.6、PHP7.1-7.3
  2. Web服务:Nginx、Openresty
  3. 数据库:MySQL5、MySQL8、Redis、memcached、MongoDB、ElasticSearch
  4. 消息队列:RabbitMQ
  5. 辅助工具:Kibana、Logstash、phpMyAdmin、phpRedisAdmin、AdminMongo
  6. 实际项目中应用,确保 100%可用
  7. 所有镜像源于Docker官方仓库,安全可靠
  8. 一次配置,Windows、Linux、MacOs皆可用
  9. 支持快速安装扩展命令 install-php-extensions apcu
  10. 具体使用文档可参考: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 tp5
Creating a "topthink/think=5.1.35" project at "./tp5"
Installing topthink/think (v5.1.35)
 - Installing topthink/think (v5.1.35): Loading from cache
Created project in /app/tp5
Loading composer repositories with package information
Updating 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 cache
Writing lock file
Generating autoload files
 ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  ll
total 0
drwxr-xr-x  3 ert staff  96B 9 6 22:02 localhost
drwxr-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 ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS                   NAMES
0f5f9cd08aa2    dnmp_php      "docker-php-entrypoi…"  27 hours ago    Up About an hour  9000/tcp, 9501/tcp             php
8bc44fc8c578    dnmp_nginx     "/docker-entrypoint.…"  27 hours ago    Up 26 hours     0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp  nginx
f02ad53bf14d    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 # ls
localhost tp5

进入NGINX配置文件路径

/ # cd /etc/nginx/
/etc/nginx # ls -la
total 60
drwxr-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.types
lrwxrwxrwx  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.conf
drwxr-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 -la
total 16
drwxr-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 reload
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: 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 redis
redis
Redis Support => enabled
Redis Version => 5.3.1
......

总结

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

(0)

相关推荐

  • 详解MAC OSX Docker开发环境搭建

    MAC OSX  Docker 开发环境搭建 1. 安装Virtualbox 下载地址:https://www.virtualbox.org/ VirtualBox简体中文版下载安装(图解教程)http://www.jb51.net/article/95311.htm 2. 安装boot2docker $ brew install boot2docker # 也可以手工安装: $ curl https://raw.github.com/steeve/boot2docker/master/boot

  • Ubuntu 搭建基于Docker的LNMP+Redis的开发环境(图文)

    Ubuntu 搭建基于Docker的LNMP+Redis的开发环境 服务器环境:Ubuntu 14.04 1.安装Docker 1.1 执行update命令,和服务器同步软件包,执行apt-get install * 时可以下载最新的软件. 1.2 安装Docker和创建软链接   1.3 启用Docker服务 2. 获取搭建环境所需镜像 2.1 MySQL镜像 2.2 Redis镜像   2.3 nginx-php-fpm镜像 2.4 查看已下载的镜像 对于Docker初学者来说,可以使用现有

  • 使用Docker快速搭建Oracle开发环境的方法教程

    前言 oracle太大了,对于开发人员来说,在本机安装一个oracle代价不菲. 在docker环境中,我找了很久,发现wnameless/oracle-xe-11g 镜像还不错,很方便搭建起来. 但是也发现一个问题,挂载本地卷遇到了麻烦.一旦挂载,就无法登陆了.从官方的issues中发现,有一个fork版本解决了这个问题,记录一下. 创建docker-compose工作目录 mkdir -p oracle/data cd oracle touch docker-compose.yml 配置do

  • 搭建基于Docker的PHP开发环境的详细教程

    现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现后,解决这个问题就变得简单了. 免责声明 由于boot2docker的工作方式,本文所述的方法在你的环境中可能无法正常运行.如果需要在非Linux环境下共享文件夹到Docker容器,还需要注意更多额外的细节.后续我会写篇文章专门来介绍实际遇到的问题. 怎样才算是好的开发环境 首先,我们得知道什么才是好的开发环境

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

    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

  • Docker 实现在线集成开发环境实例详解

    Docker 实现在线集成开发环境 由于,学校有流量限制,每月10G,超流量后限速为50KB/s,作为一个正常人类,这点流量肯定是不够用的,所以我 需要一个几乎没有流量.网速限制的开发环境. 虽然ssh连接服务器,在服务器终端下开发几乎不限速.不限流,但是开发全靠vim显然有些"不亲民",大部分人对命令行界面并不熟悉. 终端下的开发环境搭建起来也是颇为麻烦,所以本文将用 三步 教你打造一个界面美观.功能强大的.菜鸟都可以轻松搭建的 在线集成开发环境 . 目标: 一键部署,一句命令完成在

  • Java搭建简单Netty开发环境入门教程

    下面就是准备Netty的jar包了,如果你会maven的话自然是使用maven最为方便了.只需要在pom文件中导入以下几行 <!-- https://mvnrepository.com/artifact/io.netty/netty-all --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1

  • Windows系统中搭建Go语言开发环境图文详解

    目录 1.Go语言简介 2.安装Git 3.Go 工具链(编译器)安装 3.1.环境变量GOROOT 3.2.环境变量GOPATH 3.3.Go常用命令 4.包管理 4.1.go module 4.2.gopm 5.编写Go语言代码的IDE或编辑工具 5.1.基于VSCode的Go开发环境 5.1.1.安装VSCode 5.1.2.安装插件 5.1.3.常用配置 5.2.GoLand 5.3.Vim 5.4.其他Go代码编写工具 6.Go语言学习资料分享 本文详细讲述如何在 Windows 系统

  • Ubuntu 16.04 64位中搭建Node.js开发环境教程

    前言 首先说下本文的系统环境是:Ubuntu 16.04 64位,本文内容亲测可用, 大家可以请放心借鉴参考,下面来一起看看详细的步骤. 使用淘宝镜像 淘宝镜像官网是https://npm.taobao.org/ 使用淘宝镜像前请自行安装好 npm 和 node node 和 npm 的安装 node可以在这里下载 本文使用的是官方推荐v4.4.4长期支持版 下载并解压 node-v4.4.4-Linux-x64.tar.xz tar -xJf node-v4.4.4-linux-x64.tar

  • 图文详解Android Studio搭建Android集成开发环境的过程

    有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环境,不过一直没有发表出来,写这篇文章的目的是记录一下Android开发环境的搭建过程,这篇文章写得一般般,主要是记录了整个搭建过程,没什么技术含量,觉得有帮助的朋友就看一下! 一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(A

  • 使用WAMP搭建PHP本地开发环境

    写在前面的话 PHP是服务器脚本语言,所以需要在服务器上才能运行.作为新手,搭建服务器可能需要捣腾很久,有可能还搞不定.所以在入门阶段,为了把更多时间用在熟悉编程语言上,使用集成环境是最好也是最方便的选择.而本文就来介绍如何在windows平台搭建PHP开发环境. 安装集成环境 1.下载集成环境包 WampServer官网 本人下载的是Wampserver 3.0.6 64 bit ,下载完成之后双击安装即可. wamp 3.0.6 安装的软件分别为: Apache 2.4.23 PHP 5.6

  • 在MAC上搭建python数据分析开发环境

    最近工作转型到数据开发领域,想在本地搭建一个数据开发环境.自己有三年python开发经验,马上想到使用numpy.scipy.sklearn.pandas搭建一套数据开发环境. ubuntu的环境,百度中文章比较多,搭建起来非常顺利.MAC环境的资料比较少,百度出来的,已经不对了,那我就来补充一篇吧. MAC自带python,python的安装我就不多说了. 安装pip 我喜欢用pip安装python库,非常方便,pip的安装只能用源码了. #下载源代码 https://pypi.python.

  • Docker搭建 Nginx+PHP+MySQL 环境并部署WordPress实践

    Docker基于LXC实现了把软件封装到一个完整的文件系统,可以在docker容器中运行所需的一切代码,运行环境,系统工具和系统库.由于docker使用独立于主机的文件系统,可以确保软件在不同的主机环境中仍然保持运行环境不变.docker与主机共用一个操作系统内核,使用docker容器具有轻量级的特点,能占用更少的内存快速启动容器. 下面我们学习使用docker来部署目前非常流行的博客系统wordpress的运行环境nginx php mysql.那么docker部署wordpress的运行环境

  • 搭建C语言开发环境(Windows平台)汇总

    新接触C语言,如何进行C语言开发环境的搭建值得思考并整理 一.在Windows平台配置GNU环境 GNU http://www.gnu.org/ 选择以下GNU环境下载安装到C盘: 1.MinGw 官网下载安装 http://www.mingw.org/ 本站高速下载安装 http://www.jb51.net/softs/192011.html 将C:\MinGW\msys\1.0\msys.bat 发送到桌面快捷方式 在msys.bat命令框中输入 gcc 会得到:sh: gcc: comm

随机推荐