使用Docker搭建LNMP開發環境

一、什麼是Dockerphp

  Docker 使用 Google 公司推出的 Go 語言 進行開發實現,基於 Linux 內核的 cgroup,namespace,以及 AUFS 類的 Union FS 等技術,對進程進行封裝隔離,屬於操做系統層面的虛擬化技術。html

  通俗來講,Docker的思想來自於集裝箱,集裝箱解決了什麼問題?在一艘大船上,能夠把貨物規整的擺放起來。而且各類各樣的貨物被集裝箱標準化了,集裝箱和集裝箱之間不會互相影響。那麼我就不須要專門運送水果的船和專門運送化學品的船了。只要這些貨物在集裝箱裏封裝的好好的,那我就能夠用一艘大船把他們都運走。docker就是相似的理念。mysql

 

 

二、使用Docker的好處linux

  在服務器環境中,因爲如今的物理服務器的配置都是較爲強大的,若是用物理服務器配置只跑一個小服務是很是浪費的,而跑多個服務,又會致使相互影響,致使安全等風險增長,故須要一個個的容器,把每個服務隔離開來,讓它們只使用本身那部分有限的資源以及本身依賴的軟件包。在Docker出現以前,是靠虛擬機來實現的,可是每一個虛擬機都要裝本身的操做系統核心,這是對資源有點浪費。因而就有了Docker, 一個機器上能夠裝十幾個到幾十個docker,他們共享操做系統核心,佔用資源少,啓動速度快。nginx

  在開發環境中也帶來了不少的方便,好比開發環境和生產環境的差別,依賴關係的管理等都變得簡單了很多。sql

三、搭建流程docker

  docker的安裝請參閱官網,本機環境方面,給本身的筆記本和臺式都安裝了,系統分別是 ubuntu 16.04 和 windows10ubuntu

  一、mysql的安裝與配置vim

    1. 拉取鏡像windows

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建立一個能夠遠程訪問的用戶,而後就能夠遠程訪問了。

 

  二、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。

 

  三、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

      

 

 

 

 

 

  四、測試

   

<?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();
}

運行結果:

相關文章
相關標籤/搜索