<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Docker搭建LNMP環境

      Docker
      若未安裝Docker,可參考以下資料進行安裝:
      https://books.studygolang.com/docker_practice/install/

       

       

      Nginx
      1. 拉取鏡像

      docker pull nginx
      

      2. 運行容器
      (1)創建項目程序根目錄,編寫一個簡單測試的html文件:

      cd /
      mkdir www
      cd www
      vim index.html
      

      index.html文件內容如下:

      <html>
              <head>
                      <title>Docker Nginx Testing</title>
              </head>
              <body>
                      <div>
                              <h3>When you see this message, it means the docker nginx is successfully running!</h3>
                      </div>
              </body>
      </html>
      

      (2)創建nginx目錄,創建nginx配置文件nginx-test.conf:

      cd /usr/local
      mkdir nginx
      cd nginx
      mkdir conf
      cd conf
      vim nginx-test.conf
      

      nginx-test.conf文件內容如下:

      server {
          listen       80;
          location / {
              root   /www;
              index  index.html index.htm;
          }
      }
      

      (3)宿主主機8080端口映射nginx容器80端口,宿主主機/usr/local/nginx/conf目錄映射nginx容器/etc/nginx/conf.d目錄,宿主主機/www目錄映射nginx容器/www目錄,啟動容器:

      docker run --name nginx -p 8080:80 -v /usr/local/nginx/conf:/etc/nginx/conf.d -v /www:/www nginx
      

      3. 瀏覽器訪問驗證

       

       

      PHP
      1. 拉取鏡像

      docker pull php:7.1-fpm
      

      2. 定制并構建鏡像
      (1)創建php目錄

      cd /usr/local
      mkdir php
      cd php
      mkdir etc #此目錄需要放置一個php配置文件,命名php.ini
      vim Dockerfile
      

      注:關于php的配置文件,我的操作是先運行php容器,將其配置文件復制到宿主主機上,然后再進行目錄映射。復制指令:

      docker cp php:/usr/local/etc/php/php.ini-development /usr/local/php/etc/php.ini
      

      (2)Dockerfile文件內容:

      FROM php:7.1-fpm #基于鏡像文件php:7.1-fpm構建
      COPY ./etc/php.ini /usr/local/etc/php/php.ini #復制上下文目錄的php配置文件
      RUN docker-php-ext-install pdo_mysql #使用鏡像提供的安裝擴展的快捷操作安裝pdo_mysql擴展
      

      (3)構建鏡像:

      docker build -t php:my-php .
      

      3. 運行容器
      宿主主機9000端口映射php容器9000端口,宿主主機/www目錄映射php容器/www目錄,啟動容器:

      docker run --name php -p 9000:9000 -v /www:/www php:my-php
      

      4. nginx支持php
      (1)把nginx和php兩個容器通過網卡連接起來:

      docker network create --driver bridge lnmp #新建一個橋接網卡,名為lnmp
      docker network connect lnmp php #php容器連接網卡lnmp
      docker network connect lnmp nginx #nginx容器連接網卡lnmp
      docker network ls #查看網卡列表
      docker network inspect lnmp #查看網卡lnmp詳情
      

      (2)修改nginx配置文件nginx-test.conf,把PHP腳本轉發給php-fpm,php-fpm地址通過容器名進行識別:

      server {
          listen       80;
          location / {
              root   /www;
              index  index.php index.html index.htm;
          }
          location ~ \.php$ {
              root           /www;
              fastcgi_pass   php:9000;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
              include        fastcgi_params;
          }
      }
      

      (3)讓nginx容器重新加載配置文件:

      docker exec -it nginx nginx -s reload
      

      5. 運行驗證
      在宿主主機/www下創建文件phpinfo.php:

      <?php
      phpinfo();
      

      保存,瀏覽器訪問:

       

       

      MySQL
      1. 拉取鏡像

      docker pull mysql:5.7
      

      2. 定制并構建鏡像
      (1)創建mysql目錄:

      cd /usr/local
      mkdir mysql
      cd mysql
      

      (2)創建測試數據文件test.sql:

      create table student(
              id int not null primary key auto_increment comment '主鍵ID',
              name varchar(20) not null comment '姓名',
              age int not null comment '年齡'
      )engine=InnoDB default charset=utf8 comment '學生數據表';
      
      insert into student(name, age) values('小明', 18);
      insert into student(name, age) values('啊俊', 28);
      

      (3)創建Dockerfile:

      FROM mysql:5.7 #基于鏡像文件mysql:5.7構建
      ENV MYSQL_ROOT_PASSWORD=123456 MYSQL_DATABASE=test #設置root用戶密碼
      COPY ./test.sql /var/data/test.sql #復制上下文目錄的SQL文件
      

      (4)構建鏡像:

      docker build -t mysql:my-mysql .
      

      3. 運行容器
      宿主主機3306端口映射mysql容器3306端口,啟動容器并加入網絡lnmp:

      docker run --name mysql --network lnmp -p 3306:3306 mysql:my-mysql
      

      4. 運行驗證
      (1)進入容器,將測試數據導入mysql:

      docker exec -it mysql bash
      mysql -u root -p
      mysql> use test
      mysql> source /var/data/test.sql
      

      (2)在宿主主機/www目錄創建測試文件testmysql.php:

      <?php
      $dsn = 'mysql:dbname=test;host=mysql';
      $user = 'root';
      $password = '123456';
      
      try {
          $dbh = new PDO($dsn, $user, $password);
          $sql = 'SELECT * FROM student where id=?';
          $sth = $dbh->prepare($sql);
          $sth->execute([2]);
          $result = $sth->fetch(PDO::FETCH_ASSOC);
          var_dump($result);
      } catch (PDOException $e) {
          echo 'Error: ' . $e->getMessage();
      }
      

      (3)訪問運行:

       

      至此,docker搭建lnmp環境大功告成!

       

      查看運行中容器列表:

      查看網絡lnmp信息:

       

       

        上述實踐中,我們將nginx的配置文件放在宿主主機上,然后通過映射nginx容器目錄到宿主主機目錄,讓nginx使用宿主主機上的配置文件,這樣做的好處是當nginx容器被刪除時,配置文件中的更改不會丟失,以后創建的nginx容器可以繼續使用這個配置文件。
        在實際項目中,我們應該把不希望隨著容器刪除而丟失的配置和數據都保存在宿主主機上,通過容器與宿主主機的目錄映射來使用這些配置和數據,例如php的配置,以及mysql的配置,特別是mysql的數據庫數據。
        將MySQL數據庫數據保存在宿主主機的操作:首先運行mysql容器,然后將mysql容器的配置目錄文件和數據目錄文件都復制到宿主主機上,最后停止并刪除正在運行的mysql容器,映射相應目錄,重新創建并啟動一個mysql容器。這樣,即使mysql容器被刪除了,mysql數據庫的配置和數據還是不會丟失。

      docker container start mysql
      cd /usr/local/mysql
      docker cp mysql:/var/lib/mysql .
      mkdir data
      mv ./mysql/* ./data
      rmdir mysql
      docker cp mysql:/etc/mysql .
      mkdir etc
      mv ./mysql/* ./etc
      rmdir mysql
      docker stop mysql
      docker container rm mysql
      docker run --name mysql --network lnmp -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/etc:/etc/mysql mysql:my-mysql
      

       

       

       

       

      參考:
      https://books.studygolang.com/docker_practice/
      http://www.rzrgm.cn/justlikeheaven/p/11110671.html

      posted @ 2020-06-11 20:43  瘋一樣的狼人  閱讀(4399)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产精品自产在线播放| 色国产视频| 熟女人妻精品一区二区视频| 国产女主播喷水视频在线观看 | 国产成人无码性教育视频| 国产一区二区视频在线看| 南郑县| 精品亚洲国产成人痴汉av| 国产欧美综合在线观看第十页| 日韩有码中文字幕av| 日本三级理论久久人妻电影| 丰满无码人妻热妇无码区| 四虎影视4hu4虎成人| 亚洲qingse中文字幕久久| 无人去码一码二码三码区| 欧美18videosex性欧美tube1080| 老色鬼永久精品网站| 上高县| 国产精品中文字幕观看| 亚洲国产午夜精品理论片| 成人无套少萝内射中出| 日本一本无道码日韩精品| 大陆一级毛片免费播放| 激情综合网五月婷婷| 久久这里只有精品首页| 东京热一区二区三区在线| 99精品国产综合久久久久五月天| 性欧美VIDEOFREE高清大喷水| 色99久久久久高潮综合影院| 国产91精选在线观看| 欧美日本精品一本二本三区| 欧美老熟妇又粗又大| 最新中文字幕国产精品| 亚洲国产精品人人做人人爱| 免费人成视频x8x8国产| 欧美精品黑人粗大破除| 亚洲中文字幕成人无码| 色综合色综合综合综合综合| 午夜av高清在线观看| 中国熟女仑乱hd| 国产超碰人人做人人爰|