zoukankan      html  css  js  c++  java
  • 使用Docker搭建LNMP开发环境

    1、什么是Docker

      Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。

      通俗来说,Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。

     

    2、使用Docker的好处

      在服务器环境中,由于现在的物理服务器的配置都是较为强大的,如果用物理服务器配置只跑一个小服务是非常浪费的,而跑多个服务,又会导致相互影响,导致安全等风险增加,故需要一个个的容器,把每一个服务隔离开来,让它们只使用自己那部分有限的资源以及自己依赖的软件包。在Docker出现之前,是靠虚拟机来实现的,但是每个虚拟机都要装自己的操作系统核心,这是对资源有点浪费。于是就有了Docker, 一个机器上可以装十几个到几十个docker,他们共享操作系统核心,占用资源少,启动速度快。

      在开发环境中也带来了很多的方便,比如开发环境和生产环境的差异,依赖关系的管理等都变得简单了不少。

    3、搭建流程

      docker的安装请参阅官网,本机环境方面,给自己的笔记本和台式都安装了,系统分别是 ubuntu 16.04 和 windows10

      1、mysql的安装与配置

        1. 拉取镜像

    docker pull mysql:5.7

          完成后可以使用 docker images 查看拉取得镜像

        2. 运行镜像来创建容器

    docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name db_mysql mysql:5.6

          -d  让容器在后台运行 
          -p  添加主机到容器的端口映射 
          -e  设置环境变量,这里是设置mysql的root用户的初始密码
          –name 容器的名字

          创建成功后可以使用 docker ps 查看运行中的容器。

        3. 相关配置

    docker exec -ti db_mysql /bin/bash

          -t 在容器里生产一个伪终端 
          -i 对容器内的标准输入 (STDIN) 进行交互

        

          进入到mysql容器后,可以对mysql创建一个可以远程访问的用户,然后就可以远程访问了。

      2、php-fpm的安装与配置

        1.拉取镜像

    docker pull php:7.0-fpm

        2.创建容器

    #ubuntu
    docker run -d -v /home/zoujiejun/workspace/www:/var/html/www -p 9000:9000 --link db_mysql:mysql --name php70_fpm
    #windows
    docker run -d -v /workspace:/var/html/www -p 9000:9000 --link db_mysql:mysql --name php70_fpm

          -v 添加目录映射,即主机上的/var/nginx/www/html和容器中/var/www/html目录是同步的 
          –link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。(如上述命令可以使用 mysql 来访问前面mysql容器)

          如果是在windows系统,且是用virtualbox的安装方式,还需要在virtualbox的虚拟机设置中把共享文件夹的路径修改一下,从这里可以看出来,windows运行的是一个假docker- -就是一个linux虚拟机然后再跑docker。

     

        3.配置

          进入容器后,安装一个扩展。

    docker-php-ext-install pdo-mysql

          安装完成后使用 php -m 查看所有扩展。成功以后来搞nginx。

      3、nginx的安装与配置

        1.拉取镜像

    docker pull nginx:1.12

        2.创建容器

    #ubuntu
    docker run -d -v /home/zoujiejun/workspace/www:/var/html/www -p 80:80--link php70_fpm:phpfpm--name z_nginx nginx:1.12
    #windows
    docker run -d -v /workspace:/var/html/www -p 80:80 --link php70_fpm:phpfpm --name z_nginx nginx:1.12

        3.配置

          由于nginx配置要打字比较多,先装一个vim把。

    apt update
    apt install vim
    vim /etc/nginx/conf.d/default.conf

          

      4、测试

       

    <?php
    try {
        $con = new PDO('mysql:host=mysql;dbname=docker_test', 'zoujiejun', '123456');
        $con->query('SET NAMES UTF8');
        $res =  $con->query('select * from key2value');
        while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
            echo "key:{$row['key']} value:{$row['value']}";
        }
    } catch (PDOException $e) {
         echo $e->getMessage();
    }

    运行结果:

  • 相关阅读:
    svn错误:更新源码出现校验和不匹配问题
    Python:定义自己的ConfigParser
    js实现页面跳转的几种方式
    Div+CSS浏览器兼容问题( FireFox IE6 IE7 IE8 IE9)
    window.open(url地址?..&..,_blank,对话框的外观参数);
    SQL分割字符串2
    Razor语法
    js键盘事件全面控制详解
    window.open(url, name, features, replace)
    SQL游标
  • 原文地址:https://www.cnblogs.com/zoujiejun96/p/9595928.html
Copyright © 2011-2022 走看看