Docker搭建LNMP开发环境(基础篇)

  • Post author:
  • Post category:其他


Docker搭建LNMP开发环境

导语:

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

1.Docker基本命令


  • docker info

    使用docker info可以查看docker的基本信息,如版本号,镜像和容器数量等


  • docker search/pull

    使用docker search从Docker Hub查找相关的镜像,然后通过docker pull可以将镜像拉取到本地宿主机中


  • docker images

    使用docker images查看本地宿主机存在的镜像


  • docker run

    通过镜像文件创建并运行一个容器,如:


    docker run -d --name myNginx -p 8080:80 -v /var/www/html:/usr/share/nginx/html nginx


  • docker ps

    查看正在运行的容器信息,docker ps -a可以查看所有容器(包括处于没有运行的容器)


  • docker inspect

    命令docker inspect container_name可以获取容器的元数据,常用来查看容器的ip地址


2.Docker ubuntu多容器搭建LNMP环境

这个章节主要是使用docker在linux上搭建LNMP的开发环境,这里使用的是ubuntu 14.04虚拟机。 tip:安装虚拟机的时候,需要选择x64位的环境,经笔者测试docker不支持32位操作系统。

2.1拉取镜像文件
docker pull nginx php:5.6 mysql #拉取所需要的镜像
docker images #查看已有镜像
2.2构建容器
mkdir -p nginx/www nginx/conf #创建nginx目录用来挂载容器www和conf目录

创建容器并运行

cd nginx
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=xy123456 --name xy_mysql mysql #创建一个mysql容器并运行,-p将宿主机3307端口映射到容器的3306端口,-d宿主机以守护进程在后台运行
docker run -d -p 9000:9000 -v $PWD/www:/usr/share/nginx/html --name myphpfpm --link xy_mysql:mysql php:5.6-fpm #-v将当前宿主机挂载到容器的/usr/share/nginx/html目录 --link用于php-fpm和mysql容器之间的通信
docker run -d -p 8080:80 -v $PWD/www:/usr/share/nginx/html --name mynginx --link myphpfpm:phpfpm nginx #构建Nginx容器

配置nginx容器

docker exec -it mynginx /bin/bash #进入nginx修改配置
vi /etc/nginx/conf.d/default.conf

修改default.conf中的配置图如下:

location ~ \.php$ {
   fastcgi_pass   phpfpm:9000;
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
   fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
   include        fastcgi_params;
}

重启nginx服务并退出容器

service nginx restart

由于php-fpm没安装pdo扩展,安装相应扩展,先进入php容器

docker exec -it myphpfpm /bin/bash
cd /usr/bin

安装扩展

docker-php-ext-install pdo_mysql

退出后重启并查看容器状态

docker ps

这里写图片描述

2.3测试
如上图,可以看到mysql、php-fpm和nginx服务都起来了,接下来我们验证一下配置是否正确:
在www下新建index.php文件,输入<?php phpinfo();?>,保存退出,打开浏览器输入localhost:8080/index.php,
可以看到php信息,说明我们的php和nginx的服务都没问题,再验证mysql数据库的使用是否正常,修改index.php,
加入下面代码,然后再输入localhost:8080/index.php,回车,结果如图,lnmp开发环境就搭建完成啦.

数据库及表数据需自己创建

try {
    $con = new PDO('mysql:host=mysql;dbname=test', 'root', 'xy123456');
    $con->query('SET NAMES UTF8');
    $res =  $con->query('select * from test');
    while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
        echo "id:{$row['id']} name:{$row['name']}";
    }
} catch (PDOException $e) {
     echo '错误原因:'  . $e->getMessage();
}

这里写图片描述

3.Docker win7搭建PHP开发环境

这个章节主要是使用docker在win7 x64环境上搭建PHP+MYSQL开发环境,同样需要注意docker不支持win 32位的操作系统,所以32位要使用docker可参考上一章节在linux操作系统上搭建开发环境。

3.1 win7下搭建docker环境

  • win7安装docker有两个必要条件:

    1. 64位操作系统
    2. 支持虚拟化,并且,virtualization可用

  • win7安装docker具体步骤:

    1. 安装Docker Toolbox

      进入Docker Toolbox的

      下载页面

      ,安装包里面包含了git,Oracle虚拟机,docker client,docker ISO这几个软件,下载安装包直接安装即可,安装完成后,可以在桌面上看到以下三个图标:

      这里写图片描述

      点击DockerQuickStart打开终端docker就会自动配置,若顺利终端则会出现提示如下图,则docker配置成功:

      这里写图片描述

    2. xshell连接docker

      win7下的docker终端使用起来很不友好,不能复制,粘贴等,这里建议使用类似xshell的远程连接工具进行连接docker环境,下载xshell之后,填写docker环境相关信息连接,默认的用户名密码是docker/tcuser。
      这里写图片描述

    3. 安装时的小tips

      这里说一下上面提到虚拟化的问题,虚拟化在BIOS下设置,具体如何进入BIOS请百度查看相关说明。这里以华硕为例,按F2进入BIOS,先将语言设置为简体中文,选择进入Advanced高级——CPU,找到Intel Virtualization Technology英特尔虚拟化技术 选项,设置为Enabled开启,再F10保存退出即可。 具体操作点击

      华硕开启虚拟化

      查看。

3.2 win7下用docker搭建PHP开发环境
  • 首先用xshell连接docker后按

    Docker ubuntu多容器搭建LNMP环境

    中的步骤搭建好LNMP环境;这里挂载的时候,打开VirtualBox,如图配置挂载目录!

  • 这里写图片描述


    如图挂载时就-v /f/docker:/usr/share/nginx/html这样就可以;
  • 测试

    在f:/docker下新建一个index.php文件输入

4.参考文献



版权声明:本文为tracy_n原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。