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

【微服務部署】Jenkins+Docker一鍵打包部署Vue項目步驟詳解

開發 架構
NodeJS(Vue)項目也可以通過打包成Docker鏡像的方式進行部署,原理是先將項目打包成靜態頁面,然后再將靜態頁面直接Copy到Nginx鏡像中運行。

一、服務器環境配置

?前面說明了服務器Nginx的安裝和配置,這里稍微有些不同,但是因為此文是用Nginx鏡像和前端鏡像頁面同時部署的方式來打包發布的,所以這里不再需要建立
/data/container/nginx/html目錄,因為要發布的靜態頁面已經在Nginx鏡像中的/nginx/html目錄了。這里也減少了手動部署安裝Nginx的步驟,而是在Jenkins任務中調用shell命令自動執行安裝。

1、新建Dockerfile文件,用于定義Nginx鏡像,及將打包成功的靜態文件復制到鏡像中,此文件放在前端項目的根目錄下,Jenkins打包時會從此處查找Dockerfile文件。

FROM nginx:latest
# 維護者信息
MAINTAINER gitegg
# 將生成的靜態頁面文件復制到nginx的/usr/share/nginx/html/目錄
COPY dist/ /usr/share/nginx/html/
# 容器啟動時運行的命令
CMD ["nginx", "-g", "daemon off;"]

2、部署及備份目錄準備

  • 新建 /opt/tmp 目錄,用于Jenkins打包后,通過 Publish Over SSH插件將包傳輸到服務器的臨時目錄(如果前面創建過,這里無需再創建)。
  • 新建 /opt/bak 目錄,用于存儲所有部署過的包備份,方便后續版本回滾。此目錄可能會占用很大空間,所以需要選擇一個磁盤空間大的掛載目錄(如果前面創建過,這里無需再創建)。
  • 新建 /opt/script 目錄,用于Jenkins將包傳輸完成之后,執行安裝、備份操作的相關命令腳本(如果前面創建過,這里無需再創建)。
  • 新建 /data/container/nginx/www,映射Nginx容器內的/var/www目錄。
  • 新建 /data/container/nginx/logs,映射Nginx容器內的/var/log/nginx目錄,存放nginx運行日志。
  • 新建 /data/container/nginx/etc,映射Nginx容器內的/etc/nginx目錄
  • 新建 /data/container/nginx/etc/nginx.conf,映射Nginx容器內的/etc/nginx/nginx.conf配置文件
mkdir -p /opt/tmp /opt/bak /opt/script /data/container/nginx/www /data/container/nginx/logs  /data/container/nginx/etc
chmod -R 777 /opt/tmp /opt/bak /opt/script /data/container/nginx/www /data/container/nginx/logs  /data/container/nginx/etc

3、根據系統部署要求編寫Nginx配置文件nginx.conf,以下是簡單的配置方法,正常情況下https請求還需要配置ssl證書,還有ipv6配置等,后面詳細講解Nginx配置。一定要將修改后的nginx.conf文件放到/data/container/nginx/etc/目錄下,否則nginx啟動時會報錯找不到配置文件。

server {
        listen 80;
        server_name  域名;

        gzip on;
        gzip_buffers 32 4K;
        gzip_comp_level 6;
        gzip_min_length 100;
        gzip_types application/javascript text/css text/xml text/plain application/x-javascript image/jpeg image/gif image/png;
        gzip_disable "MSIE [1-6]\."; 
        gzip_vary on;

        #charset koi8-r;

        access_log  /var/log/nginx/portal.access.log  main;

        location / {
                root /nginx/html/gitegg_portal;
                try_files $uri $uri/ /index.html;
                index  index.html index.htm;
        }

        location /gitegg-api/ {
            proxy_set_header Host $http_host;               
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://172.17.0.1:8080/;
        }
    }

4、部署腳本編寫說明

  • 定義入參,可以通過Jenkins任務將參數傳入腳本中,我們定義了下面7個參數:
    container_name=portal-server : 容器名稱image_name=portal-server : 鏡像名稱version=latest : 鏡像版本portal_port=80: 宿主主機端口映射server_port=80: 容器內服務端口portal_ssl_port=443: 宿主主機端口映射serve_sslr_port=443: 容器內服務端口
  • 對參數進行檢查,是否未傳入參數,這里根據自己的實際情況判斷,比如必須傳入哪些參數,就設置參數的個數不能小于幾。
echo "param validate"
if [ $# -lt 1 ]; then
  echo "you must use like this : ./publish_docker_portal.sh <container_name> <image_name> <version> [portal port] [server port] [portal ssl port] [server ssl port]"  
  exit  
fi
  • 入參賦值,如果有參數傳入,則取服務參數,如果沒有參數傳入則取默認值
if [ "$1" != "" ]; then
   container_name="$1"
fi
echo "container_name=" $container_name
if [ "$2" != "" ]; then
   image_name="$2"
fi
if [ "$3" != "" ]; then
   version="$3"
fi
echo "version=" $version
if [ "$4" != "" ]; then
   portal_port="$4"
fi
echo "portal_port=" $portal_port
if [ "$5" != "" ]; then
   server_port="$5"
fi
echo "server_port=" $server_port
if [ "$6" != "" ]; then
   portal_ssl_port="$6"
fi
echo "portal_ssl_port=" $portal_ssl_port
if [ "$7" != "" ]; then
   serve_sslr_port="$7"
fi
echo "serve_sslr_port=" $serve_sslr_port
  • 停止并刪除容器
echo "執行docker ps"
docker ps 
if [[ "$(docker inspect $container_name 2> /dev/null | grep $container_name)" != "" ]]; 
then 
  echo $container_name "容器存在,停止并刪除"
  echo "docker stop" $container_name
  docker stop $container_name
  echo "docker rm" $container_name
  docker rm $container_name
else 
  echo $container_name "容器不存在"
fi
  • 停止并刪除鏡像
# 刪除鏡像
echo "執行docker images"
docker images
if [[ "$(docker images -q $image_name 2> /dev/null)" != "" ]]; 
then 
  echo $image_name '鏡像存在,刪除鏡像'
  docker rmi $(docker images -q $image_name 2> /dev/null) --force
else 
  echo $image_name '鏡像不存在'
fi
  • 備份本次安裝鏡像包
#bak image
echo "bak image" $image_name
BAK_DIR=/opt/bak/docker/$image_name/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp "/opt/tmp/portal-image.tar" "$BAK_DIR"/"$image_name"_`date +%H%M%S`.tar
  • 執行安裝鏡像包命令
echo "docker load" $image_name
docker load --input /opt/tmp/portal-image.tar
  • 執行運行命令
echo "docker run" $image_name
docker run -d -p $portal_port:$server_port -p $portal_ssl_port:$server_ssl_port --name=$container_name -e TZ="Asia/Shanghai" --restart=always -v /data/container/nginx/www:/var/www -v /data/container/nginx/logs:/var/log/nginx -v /data/container/nginx/etc:/etc/nginx -v /data/container/nginx/etc/nginx.conf:/etc/nginx/nginx.conf -v /etc/localtime:/etc/localtime -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone -v /bxl/container/nginx/ssl:/nginx/ssl $image_name
  • 刪除安裝文件,因為前面已經備份過了,所以這里將臨時安裝文件刪除
echo "remove tmp " $image_name
rm -rf /opt/tmp/portal-image.tar
  • 打印執行完成的命令
echo "Docker Portal is starting,please try to access $container_name conslone url"
  • 完整的安裝部署腳本
container_name=portal-server
image_name=portal-server
version=latest
portal_port=80
server_port=80
portal_ssl_port=443
serve_sslr_port=443
echo "param validate"
if [ $# -lt 1 ]; then  
  echo "you must use like this : ./publish_docker_portal.sh <container_name> <image_name> <version> [portal port] [server port] [portal ssl port] [server ssl port]"  
  exit  
fi
if [ "$1" != "" ]; then
   container_name="$1"
fi
echo "container_name=" $container_name
if [ "$2" != "" ]; then
   image_name="$2"
fi
if [ "$3" != "" ]; then
   version="$3"
fi
echo "version=" $version
if [ "$4" != "" ]; then
   portal_port="$4"
fi
echo "portal_port=" $portal_port
if [ "$5" != "" ]; then
   server_port="$5"
fi
echo "server_port=" $server_port
if [ "$6" != "" ]; then
   portal_ssl_port="$6"
fi
echo "portal_ssl_port=" $portal_ssl_port
if [ "$7" != "" ]; then
   serve_sslr_port="$7"
fi
echo "serve_sslr_port=" $serve_sslr_port

echo "執行docker ps"
docker ps 
if [[ "$(docker inspect $container_name 2> /dev/null | grep $container_name)" != "" ]]; 
then 
  echo $container_name "容器存在,停止并刪除"
  echo "docker stop" $container_name
  docker stop $container_name
  echo "docker rm" $container_name
  docker rm $container_name
else 
  echo $container_name "容器不存在"
fi
# 刪除鏡像
echo "執行docker images"
docker images
if [[ "$(docker images -q $image_name 2> /dev/null)" != "" ]]; 
then 
  echo $image_name '鏡像存在,刪除鏡像'
  docker rmi $(docker images -q $image_name 2> /dev/null) --force
else 
  echo $image_name '鏡像不存在'
fi

#bak image
echo "bak image" $image_name
BAK_DIR=/opt/bak/docker/$image_name/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp "/opt/tmp/portal-image.tar" "$BAK_DIR"/"$image_name"_`date +%H%M%S`.tar

echo "docker load" $image_name
docker load --input /opt/tmp/portal-image.tar

echo "docker run" $image_name
docker run -d -p $portal_port:$server_port -p $portal_ssl_port:$server_ssl_port --name=$container_name -e TZ="Asia/Shanghai" --restart=always -v /data/container/nginx/www:/var/www -v /data/container/nginx/logs:/var/log/nginx -v /data/container/nginx/etc:/etc/nginx -v /data/container/nginx/etc/nginx.conf:/etc/nginx/nginx.conf -v /etc/localtime:/etc/localtime -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone -v /bxl/container/nginx/ssl:/nginx/ssl $image_name

echo "remove tmp " $image_name
rm -rf /opt/tmp/portal-image.tar

echo "Docker Portal is starting,please try to access $container_name conslone url"

二、新建Jenkins配置打包任務,打包部署NodeJS(Vue)鏡像

1、新建任務前,安裝Docker Pipeline插件,使用Pipeline流水線任務構建部署,安裝Jenkins插件相關內容,請查看前面部署Jenkins相關文章。

2、安裝完插件之后,新建一個流水線任務。

3、和之前的任務一樣,選擇“丟棄舊的構建”,設置保持構建的最大個數為5。

4、下拉到“流水線”配置,選擇Pipeline script

流水線腳本如下:

node {
    # 從gitlab下載代碼
    stage('Preparation') { // for display purposes
        // Get some code from a GitHub repository
        echo "checkout from GitLab"
        checkout scmGit(branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: 'git_username', url: 'http://127.0.0.1:9091/test/test.git']])
    }
     # NodeJS打包
    stage('Build NodeJS Vue') {
        echo "build nodejs code"
        nodejs('Node17') {
            sh 'echo $PATH'
            sh 'node -v'
            sh 'pnpm -v'
            sh 'pnpm install'
            sh 'pnpm run build'
        }
    }
     # 此處判斷本機打包是否有容器,如果有的話需要刪除
    stage('Delete Old Docker Container') {
        echo "delete docker container"
        sh '''if [[ "$(docker inspect $container_name 2> /dev/null | grep $container_name)" != "" ]]; 
        then 
          echo $container_name "容器存在,停止并刪除"
          echo "docker stop" $container_name
          docker stop $container_name
          echo "docker rm" $container_name
          docker rm $container_name
        else 
          echo $container_name "容器不存在"
        fi'''
    }
    # 此處判斷本機打包是否有鏡像,如果有的話需要刪除
    stage('Delete Old Docker Image') {
        echo "delete docker image"
        sh '''if [[ "$(docker images -q gitegg-portal 2> /dev/null)" != "" ]]; 
            then 
              echo gitegg-portal \'鏡像存在,刪除鏡像\'
              docker rmi $(docker images -q gitegg-portal 2> /dev/null) --force
            else 
              echo gitegg-portal \'鏡像不存在,創建鏡像\'
            fi'''
    }
    # Docker打包鏡像,并保存為tar
    stage('Build Docker Image') {
        echo "start docker build portal code"
        // Run the docker build
        docker.build 'gitegg-portal'
        
        echo "save docker images tar"
        sh 'docker save -o portal-image.tar gitegg-portal'
    }
    # 刪除安裝在本機的Docker鏡像,非tar包
    stage('Delete New Docker Image') {
        echo "delete docker image"
        sh '''if [[ "$(docker images -q gitegg-portal 2> /dev/null)" != "" ]]; 
            then 
              echo gitegg-portal \'鏡像存在,刪除鏡像\'
              docker rmi $(docker images -q gitegg-portal 2> /dev/null) --force
            else 
              echo gitegg-portal \'鏡像不存在,創建鏡像\'
            fi'''
    }
    # 將Docker鏡像tar包發送到服務器并執行部署命令
    stage('Send Docker Image') {
        echo "send docker image"
        sshPublisher(publishers: [sshPublisherDesc(configName: 'Test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/opt/script/publish_docker_portal.sh gitegg-portal gitegg-portal latest 8130 8130 4413 4413', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'portal-image.tar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
    }
    
    stage('Publish Results') {
        echo "End Publish Portal"
    }
}

5、在任務左側點擊立即構建

  • 立即構建

  • 流水線任務可以在右側顯示階段視圖

  • 查看構建日志:點擊立即構建之后,下方會出現進度條,點擊進度條就可以進入構建日志界面。


6、構建成功后,下方會給出構建成功提示。

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-09-12 07:06:04

2023-09-08 23:30:19

2023-09-08 08:14:14

2025-09-08 01:15:00

2023-06-28 15:56:10

微服務容器無服務器計算

2023-09-10 07:20:35

2021-09-29 11:00:49

Vue文件前端

2023-10-12 09:13:14

2023-10-12 21:15:08

微服務Docker

2023-06-15 10:00:00

Jenkins任務操作

2019-10-21 11:00:29

微服務架構部署策略

2015-07-30 16:18:14

企業網D1Net

2019-02-21 15:42:22

ZStack裸金屬部署

2024-11-01 08:10:00

Vue開發

2024-04-08 13:59:03

大模型Replicate

2023-10-17 14:29:35

2010-08-10 13:22:02

2015-06-09 10:36:13

Cloud FoundAzurePaaS

2012-07-03 16:03:07

點贊
收藏

51CTO技術棧公眾號

经典一区二区三区| 最近中文字幕在线观看| 日韩精品一区二区三区中文在线| 自拍视频在线观看一区二区| 91美女片黄在线观看游戏| 色老板免费视频| 粉嫩精品导航导航| 欧洲av在线精品| 欧美日韩dvd| 欧美精品久久久久久久久久丰满| 老牛嫩草一区二区三区日本| 久久久www成人免费精品| 中文字幕乱视频| 日本综合久久| 一区二区三区高清在线| 欧美高清性xxxxhd| 精品国产免费无码久久久| 国产综合色产| 在线电影欧美日韩一区二区私密| 亚洲精品成人无码毛片| 欧美理论影院| 亚洲福利国产精品| 国产伦一区二区三区色一情| 日本人dh亚洲人ⅹxx| 超碰高清在线| 亚洲色图视频网站| 91免费电影网站| 国产91av视频| 欧美 日韩 国产精品免费观看| 亚洲深夜福利在线| 国产不卡一二三| 欧美在线在线| 欧美剧情片在线观看| 黑鬼大战白妞高潮喷白浆| 国内老司机av在线| 亚洲视频在线一区观看| 亚洲.欧美.日本.国产综合在线| 污视频在线免费观看| 国产一区欧美一区| 成人福利网站在线观看| 亚洲精品国产精品国自产网站按摩| 国产日韩欧美在线播放不卡| 国产亚洲精品久久久久久777| 国产精品久久久久久久无码| 伊人www22综合色| 91精品国产乱码久久蜜臀| the porn av| 欧美aaa大片视频一二区| 欧美视频在线免费看| 人妻少妇精品无码专区二区 | 久久99久久99精品免观看软件| 亚洲国产欧美日韩另类综合| 免费久久久久久| 免费在线观看黄| 欧美高清在线视频| 五月婷婷综合色| 成年人在线免费观看| 久久精品夜色噜噜亚洲a∨| 久久人人爽爽人人爽人人片av| 日韩一级片免费看| 96av麻豆蜜桃一区二区| 久久久精彩视频| 人成在线免费视频| 国产午夜亚洲精品不卡| 亚洲成色www久久网站| 成年人在线看| 亚洲欧美日韩综合aⅴ视频| 最近免费观看高清韩国日本大全| 国产原创视频在线观看| 亚洲精品视频观看| 免费不卡av在线| 免费福利视频一区二区三区| 欧美综合一区二区| 五月天婷婷影视| 色妞ww精品视频7777| 精品国产在天天线2019| 国产麻豆天美果冻无码视频| 精品一区二区三| 久久精品一区中文字幕| 久久精品欧美一区二区| 国产精品久久久久久久免费软件| 国产成人一区三区| 97超视频在线观看| 粉嫩蜜臀av国产精品网站| 久久国产精品99久久久久久丝袜| 国产福利在线| 一级日本不卡的影视| 97国产在线播放| 91精品韩国| 日韩午夜在线观看| 三上悠亚ssⅰn939无码播放| 日韩免费特黄一二三区| 九九热99久久久国产盗摄| 精品成人免费视频| 蜜臀99久久精品久久久久久软件| 97人人香蕉| 巨骚激情综合| 亚洲欧美精品午睡沙发| 青青草原成人网| 色综合.com| 亚洲国产精品电影在线观看| 亚洲a∨无码无在线观看| 欧美精品不卡| 国产精品黄页免费高清在线观看| www.com在线观看| 国产人妖乱国产精品人妖| 一级性生活视频| 成人网ww555视频免费看| 欧美不卡视频一区| 天美传媒免费在线观看| 国产视频久久| 91精品网站| www.久久热.com| 精品久久久精品| 免费欧美一级片| 日本精品黄色| 欧美洲成人男女午夜视频| 99er热精品视频| 国产午夜精品一区二区| 成年人网站国产| 欧美天堂一区二区| 亚洲欧美日韩直播| 国产精彩视频在线观看| 久久99在线观看| 日本一区二区精品视频| heyzo中文字幕在线| 51精品国自产在线| 国产黄色录像视频| 麻豆精品网站| 国产欧美韩日| 麻豆av在线免费观看| 日韩一区二区在线看| 战狼4完整免费观看在线播放版| 国产精品资源| 精品国产一区二区三区四区vr| 新版中文在线官网| 777午夜精品视频在线播放| 成年人在线免费看片| 香蕉国产精品偷在线观看不卡| 国产精品一区二区在线观看 | 成年人视频在线免费| 国产 日韩 欧美 综合 一区| 欧美刺激性大交免费视频| 在线观看中文字幕2021| 久久久99久久| 男人舔女人下面高潮视频| 久草精品视频| 97超级碰碰人国产在线观看| 日本黄色一区二区三区| 亚洲超碰精品一区二区| 日韩少妇一区二区| 亚洲毛片一区| 久久综合中文色婷婷| 啊啊啊久久久| 日韩精品视频免费| 中文在线第一页| 久久久精品国产99久久精品芒果| 美女福利视频在线| 国产一区二区三区四区五区传媒| 日本不卡高字幕在线2019| 黄色片在线播放| 在线观看日韩电影| 国产又色又爽又高潮免费| 激情文学综合丁香| 欧美美女黄色网| 国内精品国产成人国产三级粉色| 久久久免费观看视频| 亚洲人成色777777老人头| 日韩欧美在线字幕| 少妇愉情理伦三级| 久久99国产精品麻豆| a级片一区二区| 里番精品3d一二三区| 国产成人精品日本亚洲专区61| 高清毛片在线看| 91精品国产91久久综合桃花| 久久久久噜噜噜亚洲熟女综合| 不卡欧美aaaaa| 国产视频一区二区三区在线播放 | 亚洲黄色激情视频| 久久蜜桃一区二区| www.国产视频.com| 亚洲国产91| 欧美日韩在线播放一区二区| 亚洲成人av观看| 美女福利精品视频| 午夜一区在线观看| 欧美日韩在线直播| 欧美日韩国产精品综合| 2020国产精品自拍| 欧美成人乱码一二三四区免费| 精品1区2区3区4区| 五月天婷亚洲天综合网鲁鲁鲁| 日本高清精品| 日本aⅴ大伊香蕉精品视频| 二区在线播放| 亚洲欧美日韩第一区| h片在线免费看| 日韩欧美国产免费播放| 一区二区三区影视| 久久女同精品一区二区| 色哟哟免费视频| 全部av―极品视觉盛宴亚洲| 妞干网在线播放| 欧美freesextv| 国产一区二区精品在线| 在线日韩三级| 欧美黄网免费在线观看| 爱久久·www| 亚洲国产精品视频在线观看| 一个人看的www日本高清视频| 午夜精品久久久久久久久| 97在线观看视频免费| 久久午夜羞羞影院免费观看| 中文字幕第100页| 在线综合亚洲| 无码人妻aⅴ一区二区三区日本| 亚洲性视频大全| 99精品国产一区二区| 欧美激情不卡| 欧美黑人一级爽快片淫片高清| 青青国产在线| 精品欧美一区二区久久| 国产又粗又黄又爽| 午夜精品久久久久久| 天堂在线中文视频| 2020国产精品自拍| 99re久久精品国产| 懂色av中文一区二区三区| 污片在线免费看| 国产精品xxx| 中文字幕免费精品一区高清| 99热精品免费| 久久综合色一综合色88| 怡红院一区二区| 粉嫩嫩av羞羞动漫久久久 | 天天爽夜夜爽夜夜爽精品| 亚洲天堂a在线| 97精品在线播放| 国产精品久久久久永久免费观看| brazzers精品成人一区| 91原创在线视频| 日本一卡二卡在线| yourporn久久国产精品| 国产污在线观看| 成人综合婷婷国产精品久久| 一级全黄裸体片| 粉嫩一区二区三区在线看| 逼特逼视频在线观看| 成人国产精品视频| 制服丝袜av在线| 成人福利视频在线看| 超碰caoprom| 99国产精品国产精品久久| 玖草视频在线观看| 久久综合色8888| 欧美特级黄色录像| 中文字幕av一区二区三区高 | 波多野结衣在线观看一区二区三区| 欧美日韩在线观看一区二区三区| 欧美美女在线| 午夜视频久久久| 婷婷综合久久| www.avtt| 国产精品主播| 99热一区二区| 国产成人精品www牛牛影视| 91av免费观看| 99久久婷婷国产| 无码人妻丰满熟妇啪啪欧美| 中文成人综合网| 91精品一区二区三区蜜桃| 亚洲电影一级黄| 久久久久女人精品毛片九一| 精品视频在线免费| 国产超碰人人模人人爽人人添| 精品国产一区二区三区四区四| 欧美日韩伦理片| 精品国产依人香蕉在线精品| 色婷婷在线播放| 欧美亚洲视频在线观看| 国产成人免费精品| 国产精品theporn88| 久久av综合| 色一情一乱一乱一区91| 国产日韩一区二区三区在线播放 | 一本大道久久加勒比香蕉| 九色porny在线| 91av在线不卡| 国产成人免费av一区二区午夜| 国产日韩精品一区观看| 日韩专区精品| 妞干网在线视频观看| 日本欧美加勒比视频| 18深夜在线观看免费视频| 久久精品人人做| 欧美人妻精品一区二区三区| 在线观看精品一区| 日本波多野结衣在线| zzijzzij亚洲日本成熟少妇| 中文字幕一区久| 亚洲aⅴ男人的天堂在线观看 | 日本免费在线视频观看| 一区二区国产精品| www.桃色.com| 国产婷婷一区二区| 日韩美女一级片| 欧美另类变人与禽xxxxx| 在线观看xxx| 欧美大秀在线观看| 四虎视频在线精品免费网址| 久久精品aaaaaa毛片| 欧美va天堂在线| 羞羞的视频在线| 久久青草欧美一区二区三区| 国产一级特黄aaa大片| 欧美一区二区三区免费| av中文字幕在线| 日本精品久久电影| 精品中国亚洲| www.好吊操| 国产传媒日韩欧美成人| 我要看一级黄色录像| 色视频欧美一区二区三区| 人妻少妇一区二区三区| 欧美日韩国产成人| 国产精品白丝久久av网站| 亚洲巨乳在线观看| 日韩影院在线观看| 好吊视频在线观看| 色先锋aa成人| 欧美日本网站| 欧美在线视频观看免费网站| 久久婷婷国产| www.好吊操| 成人av影院在线| 国产成人精品av久久| 日韩精品一区国产麻豆| 成人短视频在线| 成人国产精品一区| 天天色综合色| 亚洲制服中文字幕| 亚洲女子a中天字幕| 99热这里只有精品在线| 美日韩精品视频免费看| 日本免费一区二区视频| 国内自拍中文字幕| 福利一区二区在线观看| 久草免费新视频| 精品国产乱码久久久久久浪潮| 久草成色在线| 精品国产一区二区三区日日嗨| 亚洲伊人网站| 久久只有这里有精品| 欧美性高清videossexo| 午夜在线小视频| 亚洲xxxxx性| 国内精品久久久久久久97牛牛 | 久久久久久久久久久久久久久久久久久久| 久久www视频| 成人午夜免费av| 校园春色 亚洲| 亚洲电影免费观看高清完整版在线观看| 欧美wwww| 国产亚洲精品美女| 在线免费观看毛片| 精品中文视频在线| 成人午夜sm精品久久久久久久| 一本一本a久久| 国产精品资源在线看| 欧美成人aaa片一区国产精品| 欧美成人bangbros| 国产伦精品一区二区三区视频金莲| 日韩av不卡在线播放| 精品一区二区三区免费| 国产小视频在线观看免费| 精品性高朝久久久久久久| 国产精品一区二区免费福利视频| ijzzijzzij亚洲大全| 成人小视频在线| 精人妻无码一区二区三区| 久久久精品在线| 日韩手机在线| www.日本一区| 亚洲r级在线视频| 国产黄色在线| 91av一区二区三区| 蘑菇福利视频一区播放| 疯狂撞击丝袜人妻| 日韩成人av在线播放| 欧美黑粗硬大| 777久久久精品一区二区三区| 国产精品久久久一区麻豆最新章节| 免费观看毛片网站| 国产精品久久久久久久久久久不卡 | 成人免费午夜电影| 亚洲深爱激情| 亚洲最大的黄色网址| 亚洲精品在线电影| 欧美黑粗硬大|