精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Docker在PHP項目開發環境中的應用

云計算
環境部署是所有團隊都必須面對的問題,隨著系統越來越大,依賴的服務也越來越多,如何可以更好的解決這些問題?本文記錄了PHP團隊最近將開發環境過渡到Docker的演進過程,希望對廣大PHPer有所幫助。

環境部署是所有團隊都必須面對的問題,隨著系統越來越大,依賴的服務也越來越多,比如我們目前的一個項目就會用到:

  1. Web服務器:Nginx
  2. Web程序:PHP + Node
  3. 數據庫:MySQL
  4. 搜索引擎:ElasticSearch
  5. 隊列服務:Gearman
  6. 緩存服務:Redis + Memcache
  7. 前端構建工具:npm + bower + gulp
  8. PHP CLI工具:Composer + PHPUnit

因此團隊的開發環境部署隨之暴露出若干問題:

  1. 依賴服務很多,本地搭建一套環境成本越來越高,初級人員很難解決環境部署中的一些問題
  2. 服務的版本差異及OS的差異都可能導致線上環境BUG
  3. 項目引入新的服務時所有人的環境需要重新配置

對于問題1,可以用Vagrant這樣的基于虛擬機的項目來解決,團隊成員共享一套開發環境鏡像。對于問題2,可以引入類似PHPBrew這樣的多版本PHP管理工具來解決。但兩者都不能很好地解決問題3,因為虛擬機鏡像沒有版本管理的概念,當多人維護一個鏡像時,很容易出現配置遺漏或者沖突,一個很大的鏡像傳輸起來也不方便。

Docker的出現讓上面的問題有了更好的解決方案,雖然個人對于Docker大規模應用到生產環境還持謹慎態度,但如果僅僅考慮測試及開發,私以為Docker的容器化理念已經是能真正解決環境部署問題的銀彈了。

下面介紹Docker構建PHP項目開發環境過程中的演進,本文中假設你的操作系統為Linux,已經安裝了Docker,并且已經了解Docker是什么,以及Docker命令行的基礎使用,如果沒有這些背景知識建議先自行了解。

Hello World

首先還是從一個PHP在Docker容器下的Hello World實例開始。我們準備這樣一個PHP文件index.php:

  1. echo "PHP in Docker"

然后在同目錄下創建文本文件并命名為Dockerfile,內容為:

 

  1. #  從官方PHP鏡像構建 
  2. FROM       php 
  3.  
  4. # 將index.php復制到容器內的/var/www目錄下 
  5. ADD        index.php /var/www 
  6.  
  7. # 對外暴露8080端口 
  8. EXPOSE     8080 
  9.  
  10. # 設置容器默認工作目錄為/var/www 
  11. WORKDIR    /var/www 
  12.  
  13. # 容器運行后默認執行的指令 
  14. ENTRYPOINT ["php""-S""0.0.0.0:8080"

 

構建這個容器:

  1. docker build -t allovince/php-helloworld . 

運行這個容器

  1. docker run -d -p 8080:8080 allovince/php-helloworld 

查看結果:

 

  1. curl localhost:8080 
  2. PHP in Docker 

 

這樣我們就創建了一個用于演示PHP程序的Docker容器,任何安裝過Docker的機器都可以運行這個容器獲得同樣的結果。而任何有上面的php文件和Dockerfile的人都可以構建出相同的容器,從而完全消除了不同環境,不同版本可能引起的各種問題。

想象一下程序進一步復雜,我們應該如何擴展呢,很直接的想法是繼續在容器內安裝其他用到的服務,并將所有服務運行起來,那么我們的Dockerfile很可能發展成這個樣子:

 

  1. FROM       php 
  2. ADD        index.php /var/www 
  3.  
  4. # 安裝更多服務 
  5. RUN        apt-get install -y \ 
  6.        mysql-server \ 
  7.        nginx \ 
  8.        php5-fpm \ 
  9.        php5-mysql 
  10.  
  11. # 編寫一個啟動腳本啟動所有服務 
  12. ENTRYPOINT ["/opt/bin/php-nginx-mysql-start.sh"

 

雖然我們通過Docker構建了一個開發環境,但覺不覺得有些似曾相識呢。沒錯,其實這種做法和制作一個虛擬機鏡像是差不多的,這種方式存在幾個問題:

  • 如果需要驗證某個服務的不同版本,比如測試PHP5.3/5.4/5.5/5.6,就必須準備4個鏡像,但其實每個鏡像只有很小的差異。
  • 如果開始新的項目,那么容器內安裝的服務會不斷膨脹,最終無法弄清楚哪個服務是屬于哪個項目的。

#p#

使用單一進程容器

上面這種將所有服務放在一個容器內的模式有個形象的非官方稱呼:Fat Container。與之相對的是將服務分拆到容器的模式。從Docker的設計可以看到,構建鏡像的過程中可以指定唯一一個容器啟動的指令,因此 Docker天然適合一個容器只運行一種服務,而這也是官方更推崇的。

分拆服務遇到的第一個問題就是,我們每一個服務的基礎鏡像從哪里來?這里有兩個選項:

選項一、 統一從標準的OS鏡像擴展,比如下面分別是Nginx和MySQL鏡像

 

FROM ubuntu:14.04
RUN  apt-get update -y && apt-get install -y nginx

 

 

  1. FROM ubuntu:14.04 
  2. RUN apt-get update -y && apt-get install -y mysql 

這種方式的優點在于所有服務可以有一個統一的基礎鏡像,對鏡像進行擴展和修改時可以使用同樣的方式,比如選擇了ubuntu,就可以使用apt-get指令安裝服務。

問題在于大量的服務需要自己維護,特別是有時候需要某個服務的不同版本時,往往需要直接編譯源碼,調試維護成本都很高。

選項二、 直接從Docker Hub繼承官方鏡像,下面同樣是Nginx和MySQL鏡像

FROM nginx:1.9.0
  1. FROM mysql:5.6 

Docker Hub可以看做是Docker的Github,Docker官方已經準備好了大量常用服務的鏡像,同時也有非常多第三方提交的鏡像。甚至可以基于Docker-Registry項目在短時間內自己搭建一個私有的Docker Hub。

基于某個服務的官方鏡像去構建鏡像,有非常豐富的選擇,并且可以以很小的代價切換服務的版本。這種方式的問題在于官方鏡像的構建方式多種多樣,進行擴展時需要先了解原鏡像的Dockerfile。

出于讓服務搭建更靈活的考慮,我們選擇后者構建鏡像。

為了分拆服務,現在我們的目錄變為如下所示結構:

 

  1. ~/Dockerfiles 
  2. ├── mysql 
  3. │   └── Dockerfile 
  4. ├── nginx 
  5. │   ├── Dockerfile 
  6. │   ├── nginx.conf 
  7. │   └── sites-enabled 
  8. │       ├── default.conf 
  9. │       └── evaengine.conf 
  10. ├── php 
  11. │   ├── Dockerfile 
  12. │   ├── composer.phar 
  13. │   ├── php-fpm.conf 
  14. │   ├── php.ini 
  15. │   ├── redis.tgz 
  16. └── redis 
  17. └── Dockerfile 

 

即為每個服務創建單獨文件夾,并在每個服務文件夾下放一個Dockerfile。

MySQL容器

MySQL繼承自官方的MySQL5.6鏡像,Dockerfile僅有一行,無需做任何額外處理,因為普通需求官方都已經在鏡像中實現了,因此Dockerfile的內容為:

FROM mysql:5.6

在項目根目錄下運行

  1. docker build -t eva/mysql ./mysql 

會自動下載并構建鏡像,這里我們將其命名為eva/mysql。

由于容器運行結束時會丟棄所有數據庫數據,為了不用每次都要導入數據,我們將采用掛載的方式持久化MySQL數據庫,官方鏡像默認將數據庫存放在/var/lib/mysql,同時要求容器運行時必須通過環境變量設置一個管理員密碼,因此可以使用以下指令運行容器:

  1. docker run -p 3306:3306 -v ~/opt/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -it eva/mysql 

通過上面的指令,我們將本地的3306端口綁定到容器的3306端口,將容器內的數據庫持久化到本地的~/opt/data/mysql,并且為MySQL設置了一個root密碼123456

Nginx容器

Nginx目錄下提前準備了Nginx配置文件nginx.conf以及項目的配置文件default.conf等。Dockerfile內容為:

 

FROM nginx:1.9

ADD  nginx.conf      /etc/nginx/nginx.conf
ADD  sites-enabled/*    /etc/nginx/conf.d/
RUN  mkdir /opt/htdocs && mkdir /opt/log && mkdir /opt/log/nginx
RUN  chown -R www-data.www-data /opt/htdocs /opt/log

VOLUME ["/opt"]

 

由于官方的Nginx1.9是基于Debian Jessie的,因此首先將準備好的配置文件復制到指定位置,替換鏡像內的配置,這里按照個人習慣,約定/opt/htdocs目錄為Web服務器根目錄,/opt/log/nginx目錄為Nginx的Log目錄。

同樣構建一下鏡像

 

docker build -t eva/nginx ./nginx

并運行容器

docker run -p 80:80 -v ~/opt:/opt -it eva/nginx

注意我們將本地的80端口綁定到容器的80端口,并將本地的~/opt目錄掛載到容器的/opt目錄,這樣就可以將項目源代碼放在~/opt目錄下并通過容器訪問了。

#p#

PHP容器

PHP容器是最復雜的一個,因為在實際項目中,我們很可能需要單獨安裝一些PHP擴展,并用到一些命令行工具,這里我們以 Redis擴展以及Composer來舉例。首先將項目需要的擴展等文件提前下載到php目錄下,這樣構建時就可以從本地復制而無需每次通過網絡下載,大大加快鏡像構建的速度:

 

  1. wget https://getcomposer.org/composer.phar -O php/composer.phar 
  2. wget https://pecl.php.net/get/redis-2.2.7.tgz -O php/redis.tgz 

 

php目錄下還準備好了php配置文件php.ini以及php-fpm.conf,基礎鏡像我們選擇的是PHP 5.6-FPM,這同樣是一個Debian Jessie鏡像。官方比較親切的在鏡像內部準備了一個docker-php-ext-install指令,可以快速安裝如GD、PDO等常用擴展。所有支持的擴展名稱可以通過在容器內運行docker-php-ext-install獲得。

來看一下Dockerfile:

 

  1. FROM php:5.6-fpm 
  2.  
  3. ADD php.ini    /usr/local/etc/php/php.ini 
  4. ADD php-fpm.conf    /usr/local/etc/php-fpm.conf 
  5.  
  6. COPY redis.tgz /home/redis.tgz 
  7. RUN docker-php-ext-install gd \ 
  8. && docker-php-ext-install pdo_mysql \ 
  9. && pecl install /home/redis.tgz && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini 
  10. ADD composer.phar /usr/local/bin/composer 
  11. RUN chmod 755 /usr/local/bin/composer 
  12.  
  13. WORKDIR /opt 
  14. RUN usermod -u 1000 www-data 
  15.  
  16. VOLUME ["/opt"

 

在構建過程中做了這樣一些事情:

  1. 復制php和php-fpm配置文件到相應目錄
  2. 復制redis擴展源代碼到/home
  3. 通過docker-php-ext-install安裝GD和PDO擴展
  4. 通過pecl安裝Redis擴展
  5. 復制composer到鏡像作為全局指令

按照個人習慣,仍然設置/opt目錄作為工作目錄。

這里有一個細節,在復制tar包文件時,使用的Docker指令是COPY而不是ADD,這是由于ADD指令會自動解壓tar文件。

現在終于可以構建+運行了:

 

  1. docker build -t eva/php ./php 
  2. docker run -p 9000:9000 -v ~/opt:/opt -it eva/php 

 

在大多數情況下,Nginx和PHP所讀取的項目源代碼都是同一份,因此這里同樣掛載本地的~/opt目錄,并且綁定9000端口。

PHP-CLI的實現

php容器除了運行php-fpm外,還應該作為項目的php cli使用,這樣才能保證php版本、擴展以及配置文件保持一致。

例如在容器內運行Composer,可以通過下面的指令實現:

 

  1. docker run -v $(pwd -P):/opt -it eva/php composer install --dev -vvv 

這樣在任意目錄下運行這行指令,等于動態將當前目錄掛載到容器的默認工作目錄并運行,這也是PHP容器指定工作目錄為/opt的原因。

同理還可以實現phpunit、npm、gulp等命令行工具在容器內運行。

Redis容器

為了方便演示,Redis僅僅作為緩存使用,沒有持久化需求,因此Dockerfile僅有一行

FROM redis:3.0

容器的連接

上面已經將原本在一個容器中運行的服務分拆到多個容器,每個容器只運行單一服務。這樣一來容器之間需要能互相通信。Docker容器間通訊的方法有兩種,一種是像上文這樣將容器端口綁定到一個本地端口,通過端口通訊。另一種則是通過Docker提供的Linking功能,在開發環境下,通過Linking通信更加靈活,也能避免端口占用引起的一些問題,比如可以通過下面的方式將Nginx和PHP鏈接起來:

 

  1. docker run -p 9000:9000 -v ~/opt:/opt --name php -it eva/php 
  2. docker run -p 80:80 -v ~/opt:/opt -it --link php:php eva/nginx 

 

在一般的PHP項目中,Nginx需要鏈接PHP,而PHP又需要鏈接MySQL,Redis等。為了讓容器間互相鏈接更加容易管理,Docker官方推薦使用Docker-Compose完成這些操作。

用一行指令完成安裝

 

  1. pip install -U docker-compose 

然后在Docker項目的根目錄下準備一個docker-compose.yml文件,內容為:

 

  1. nginx: 
  2. build: ./nginx 
  3. ports: 
  4.   - "80:80" 
  5. links: 
  6.   - "php" 
  7. volumes: 
  8.   - ~/opt:/opt 
  9.  
  10. php: 
  11. build: ./php 
  12. ports: 
  13.   - "9000:9000" 
  14. links: 
  15.   - "mysql" 
  16.   - "redis" 
  17. volumes: 
  18.   - ~/opt:/opt 
  19.  
  20. mysql: 
  21. build: ./mysql 
  22. ports: 
  23.   - "3306:3306" 
  24. volumes: 
  25.   - ~/opt/data/mysql:/var/lib/mysql 
  26. environment: 
  27.   MYSQL_ROOT_PASSWORD: 123456 
  28.  
  29. redis: 
  30. build: ./redis 
  31. ports: 
  32.   - "6379:6379" 

 

然后運行docker-compose up,就完成了所有的端口綁定、掛載、鏈接操作。

更復雜的實例

上面是一個標準PHP項目在Docker環境下的演進過程,實際項目中一般會集成更多更復雜的服務,但上述基本步驟仍然可以通用。比如EvaEngine/Dockerfiles是為了運行我的開源項目EvaEngine準備的基于Docker的開發環境,EvaEngine依賴了隊列服務Gearman,緩存服務Memcache、Redis,前端構建工具Gulp、Bower,后端Cli工具Composer、PHPUnit等。具體實現方式可以自行閱讀代碼。

原文鏈接:http://www.wolonge.com/zhuanlan/detail/117441
 

責任編輯:Ophira 來源: AlloVince的專欄
相關推薦

2015-01-04 09:49:37

PHPDocker開發環境

2009-12-02 19:51:54

PHP Switch語

2009-07-09 10:03:40

Servlet應用Weblogic環境

2017-04-28 11:45:16

大數據Kafka大數據應用

2011-07-26 14:18:20

2014-04-23 13:30:23

類簇iOS開發

2009-12-29 14:58:31

WPF優點

2022-02-14 07:47:26

overlayfsdockerrootfs

2015-04-13 09:51:27

dockerdocker應用現狀

2009-11-26 10:48:59

PHP驗證碼

2022-10-14 16:48:40

因果推斷數據預處理特征設計

2010-06-17 10:22:47

PHP

2017-05-08 08:34:24

2010-07-11 00:24:50

EclipsePHPPDT

2010-12-08 09:38:43

C#枚舉

2012-02-28 10:33:27

Eclipse 3.7Android環境

2015-07-23 10:07:22

PHPPHP開發Docker

2011-08-24 13:56:12

Lua游戲

2009-12-03 13:10:06

2009-05-08 13:48:56

微軟PHP開源
點贊
收藏

51CTO技術棧公眾號

国产日韩av在线| 精品视频—区二区三区免费| 在线观看精品视频| 国产毛片久久久久| 日韩午夜电影| 国产一区二区三区在线| 亚洲欧美手机在线| 韩国精品一区| 国产精品你懂的在线欣赏| 亚洲aa中文字幕| 日韩免费不卡视频| 色综合咪咪久久网| 亚洲精品一区二区精华| 国产野外作爱视频播放| 色呦呦在线看| 亚洲国产高清在线| www.久久爱.cn| 欧美性猛交bbbbb精品| 久久久久电影| 亚洲欧美国内爽妇网| 国产在线观看中文字幕| 午夜欧美激情| 一区二区三区欧美视频| 欧洲成人一区二区| 午夜免费福利视频| 日韩av在线发布| 久久久日本电影| 51精品免费网站| 性欧美xxxx免费岛国不卡电影| 欧美另类变人与禽xxxxx| 欧美日韩黄色一级片| 米奇777四色精品人人爽| 久久婷婷一区二区三区| 国产区一区二区三区| 99热这里只有精品3| 巨乳诱惑日韩免费av| 久久久久久有精品国产| 国产成人综合在线视频| 亚洲美女久久| 亚洲国产另类久久精品 | 91在线免费看片| 高潮毛片又色又爽免费 | 91欧美日韩在线| 欧美日韩五月天| 久久婷婷国产精品| 一个人看的www视频在线免费观看| 亚洲精选视频免费看| 亚洲一区三区视频在线观看 | 色妞在线综合亚洲欧美| 国产伦理片在线观看| 亚洲精品播放| 亚洲女人初尝黑人巨大| 51调教丨国产调教视频| 欧美日韩精品一区二区三区在线观看| 日韩精品一区二区三区四区| 污污视频在线免费| 国产美女亚洲精品7777| 8v天堂国产在线一区二区| 在线观看国产一级片| 国产精品xxx| 欧美日韩久久一区二区| 色国产在线视频| а√天堂资源国产精品| 欧美色中文字幕| 亚洲男人天堂av在线| 日韩在线电影| 欧美精品123区| 欧美国产日韩在线视频| 亚洲无线观看| 亚洲高清一二三区| 中文字幕丰满孑伦无码专区| 秋霞综合在线视频| 亚洲片在线观看| 99精品全国免费观看| 欧美超碰在线| 久久的精品视频| 国产亚洲欧美精品久久久www| 在线日韩av| 欧美在线一区二区视频| 成人毛片一区二区三区| 久草在线在线精品观看| 草莓视频一区| 欧洲一级在线观看| 中文字幕精品一区二区精品绿巨人 | 久久精品视频在线播放| 久久久久久久久艹| av成人激情| 国产精品www色诱视频| 一本大道伊人av久久综合| 国产乱码精品一品二品| 国产一区视频观看| 香蕉视频国产在线观看| 一区二区三区在线视频免费观看| 日韩欧美亚洲天堂| 日韩欧美激情| 亚洲国产精品久久久久| 99久久精品免费视频| 亚洲免费二区| 日韩免费在线观看视频| 国产一区二区三区四区视频| 99久久夜色精品国产网站| 色大师av一区二区三区| 污片视频在线免费观看| 色av成人天堂桃色av| 熟妇无码乱子成人精品| 国产va免费精品观看精品视频| 日韩在线精品一区| 中文字幕激情小说| 国产福利电影一区二区三区| 欧美日韩最好看的视频| dy888亚洲精品一区二区三区| 欧美日韩国产综合新一区 | 国产成人精品一区二区三区免费| 欧美一区二区女人| xxxx日本黄色| 亚洲美女一区| 91夜夜揉人人捏人人添红杏| 国产三级视频在线| 午夜在线成人av| 91亚洲精品久久久蜜桃借种| 九九久久婷婷| 97香蕉超级碰碰久久免费的优势| 国产又粗又长又大视频| 久久免费国产精品| 国产精品裸体瑜伽视频| 国产一区二区三区国产精品| 亚洲人成在线观看| 日韩精品一区二区av| 国产在线视频一区二区三区| 欧美日韩综合久久| 日韩大片免费观看| 亚洲成人中文字幕| 精品无码av在线| 国产在线一区观看| 亚洲在线色站| 成人精品电影在线| 亚洲区中文字幕| 日韩伦人妻无码| 国产69精品久久777的优势| 少妇高潮流白浆| 国外成人福利视频| 一区二区欧美久久| 欧美成人精品网站| 国产欧美va欧美不卡在线| aa在线免费观看| 欧美亚洲tv| 4388成人网| 亚洲人午夜射精精品日韩| 欧美日韩国产精品一区二区不卡中文| 野战少妇38p| 好看的日韩av电影| 都市激情久久久久久久久久久| 二区在线播放| 欧美成人性福生活免费看| 全网免费在线播放视频入口| 久久精品理论片| 亚洲视频小说| 国产激情一区| 欧美乱妇高清无乱码| av天堂一区二区三区| 亚洲精品综合在线| 日本人妻一区二区三区| 影音先锋中文字幕一区| 国产一区二区三区高清| 白浆在线视频| 亚洲欧洲日本专区| 久久精品国产亚洲av麻豆蜜芽| 久久久久国产免费免费| 亚洲少妇第一页| 婷婷综合视频| 国产二区一区| 在线天堂中文资源最新版| 亚洲日本aⅴ片在线观看香蕉| wwwwww在线观看| 亚洲人成影院在线观看| 国产乱淫av麻豆国产免费| 亚洲第一伊人| 免费试看一区| 国产资源一区| 久久久久中文字幕| 浮生影视网在线观看免费| 欧美精品日韩一区| 久久亚洲成人av| 久久久久久久综合日本| 男人的天堂最新网址| 韩国亚洲精品| 欧美一级日本a级v片| 久久亚洲国产精品尤物| 欧美激情视频给我| 成年人视频网站在线| 91精品国产入口| 全部毛片永久免费看| 国产精品成人免费精品自在线观看| 日韩成人av影院| 日本在线不卡视频| 男女猛烈激情xx00免费视频| 区一区二视频| 国产精品久久精品国产| av在线日韩| 久久久久国产精品免费| yiren22综合网成人| 日韩欧美一区电影| 波多野结衣一本一道| 亚洲激情图片小说视频| 免费网站在线高清观看| 国产成人aaa| 亚洲一级片免费| 亚洲欧洲一区二区天堂久久| 一区二区91美女张开腿让人桶| 成人动漫视频| 成人欧美在线视频| 欧美人体一区二区三区| 欧美黑人狂野猛交老妇| 在线观看的av| 亚洲免费一在线| 国精品人妻无码一区二区三区喝尿| 欧美视频精品在线| 特级毛片www| 亚洲18女电影在线观看| 日本高清一二三区| 国产精品污www在线观看| 亚洲の无码国产の无码步美| 国内久久精品视频| 8x8x最新地址| 久久精品欧洲| 成人一区二区免费视频| 欧美激情五月| 欧美日韩在线免费观看视频| 国产精品一区2区3区| 国产伦精品一区二区三区照片 | 99综合在线| 国产乱子伦精品无码专区| 91精品综合久久久久久久久久久 | 亚洲91视频| 日本一区二区不卡高清更新| 任你躁在线精品免费| 高清视频一区二区三区| 麻豆国产一区| 92福利视频午夜1000合集在线观看| 成人免费在线观看视频| 国产99久久精品一区二区| 深夜成人在线| 5278欧美一区二区三区| 草草在线观看| 韩国精品美女www爽爽爽视频| 日本在线观看高清完整版| 蜜月aⅴ免费一区二区三区| 日本在线免费| 色婷婷av一区二区三区久久| av在线免费播放网站| 一区二区三欧美| 1区2区3区在线观看| 中文字幕精品久久| 性开放的欧美大片| 久久天堂电影网| 午夜激情在线| 欧美精品www在线观看| 后进极品白嫩翘臀在线播放| 久久久久亚洲精品国产| а√天堂8资源在线| 欧美一区三区三区高中清蜜桃| 欧美激情网站| 日本免费久久高清视频| 蜜桃视频成人m3u8| 91久久久久久久久| 亚洲一区电影| 精品一区二区日本| 狠狠综合久久av一区二区蜜桃| 亚洲国产一区二区三区在线| 国产大片一区| 国产精品自拍合集| 99在线精品视频在线观看| 久久久精品在线视频| 毛片基地黄久久久久久天堂| 91欧美一区二区三区| 成人avav影音| 久久丫精品忘忧草西安产品| 亚洲欧美影音先锋| 国产精品自拍视频一区| 色哟哟精品一区| 国产精品无码天天爽视频| 亚洲成人亚洲激情| 东热在线免费视频| 欧美激情欧美激情在线五月| 亚洲电影观看| 成人黄色在线观看| 久久免费视频66| 亚洲欧洲精品一区二区| 国内自拍视频一区二区三区 | 五月天免费网站| 亚洲国产欧美在线| 免费无码国产精品| 欧美成人一区二区| 国产视频第一区| 欧美精品成人91久久久久久久| 我爱我色成人网| 成人欧美一区二区三区在线观看 | 亚洲精品视频中文字幕| 日韩精品黄色| 国产91精品久久久久久| 欧美一级在线| 激情视频一区二区| 88国产精品视频一区二区三区| jizzjizz国产精品喷水| 国产在线精品一区在线观看麻豆| 星空大象在线观看免费播放| 国产精品美女一区二区在线观看| 日韩精品在线免费看| 欧美精选在线播放| 国产色在线 com| 97免费视频在线| 国产视频网站一区二区三区| 欧美区高清在线| 国产精品多人| 在线播放av中文字幕| 国产欧美一区二区三区鸳鸯浴 | 欧美性猛交xxxx免费看漫画 | 九一九一国产精品| 久久国产精品无码一级毛片| 亚洲免费伊人电影| 中文字幕在线观看免费| 精品无人区太爽高潮在线播放 | 高清av免费看| 久久一夜天堂av一区二区三区| 免费三片在线播放| 欧美精品在线一区二区| avav免费在线观看| 国产98色在线| 一区二区三区四区在线看| 黄页网站大全在线观看| 国产成人啪午夜精品网站男同| 三级黄色在线观看| 欧美在线观看18| 国产区av在线| 国产成人av在线| 亚洲三级精品| 人妻内射一区二区在线视频| 99国产精品久久久| 久久艹免费视频| 精品无人区太爽高潮在线播放| 超碰成人av| 久久久神马电影| 国产日韩一区二区三区在线| 免费a v网站| 亚洲成人av电影在线| 欧美一级视频免费| 高清欧美性猛交xxxx| 综合久久成人| 无码熟妇人妻av在线电影| 国产成人8x视频一区二区| 国产一级aa大片毛片| 精品国产99国产精品| 98色花堂精品视频在线观看| 极品尤物一区二区三区| 久久久久久9| 亚洲国产日韩一区无码精品久久久| 日本高清免费不卡视频| 成年人在线观看网站| 国产色综合天天综合网| 久久久久亚洲| 任你躁av一区二区三区| 亚洲va欧美va天堂v国产综合| 五月天福利视频| 国产成人福利视频| 久久精品国产大片免费观看| www.久久91| 亚洲自拍与偷拍| 五月婷婷久久久| 国产精品va在线播放| 欧美电影一区| 国产免费无码一区二区| 五月开心婷婷久久| 二区在线视频| 亚洲影院高清在线| 精品69视频一区二区三区Q| 成年人的黄色片| 欧美日韩一区二区欧美激情| 国产区在线观看| 国产在线一区二区三区四区| 免费永久网站黄欧美| 免费看一级黄色| 精品久久久三级丝袜| 欧美黑人疯狂性受xxxxx野外| 在线国产99| 99久久国产综合精品女不卡| 亚洲图片欧美日韩| 美女性感视频久久久| 欧洲vs亚洲vs国产| 亚洲涩涩在线观看| 亚洲sss视频在线视频| wwwxxx在线观看| 99久久精品免费看国产四区| 亚洲神马久久| 国产成人综合在线视频| 亚洲精品综合精品自拍| 国产剧情一区二区在线观看| 欧美日韩在线不卡视频| 亚洲欧美日韩中文字幕一区二区三区| 视频三区在线观看| 91精品国产高清久久久久久91裸体|