精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久久久亚洲av无码专区 | 一本综合久久| 亚洲欧美一区二区三区四区| 欧美伦理片在线观看| gogo在线观看| 久久九九久精品国产免费直播| 国产伊人精品在线| 日本熟妇乱子伦xxxx| 欧美理论电影大全| 精品成a人在线观看| 国产区二区三区| 国产经典三级在线| 18欧美亚洲精品| 久久精品国产精品国产精品污| 一本一道人人妻人人妻αv| 亚洲激情午夜| 久久综合色影院| www.av欧美| 丁香一区二区| 91精品视频网| 99热手机在线| 台湾佬中文娱乐网欧美电影| 日韩毛片在线免费观看| 免费中文日韩| 欧美一级特黄aaaaaa大片在线观看| 日韩不卡免费视频| 18性欧美xxxⅹ性满足| 日本精品人妻无码77777| 欧美精品乱码| 国产丝袜一区视频在线观看| 免费看三级黄色片| 国产成年精品| 欧美午夜寂寞影院| 茄子视频成人免费观看| 啊啊啊久久久| 亚洲一区二区综合| 亚洲啊啊啊啊啊| 1024国产在线| 亚洲国产精品二十页| 欧美日韩免费观看一区| 无码精品黑人一区二区三区| 大尺度一区二区| 国产欧美日韩视频| 国产美女www爽爽爽| 久久一区亚洲| 国产成人精品在线观看| 亚洲乱码国产乱码精品| 久久精品道一区二区三区| 91av在线免费观看| 久久久久久久久久影院| 99re国产精品| 欧美亚洲成人xxx| 中文字幕亚洲精品在线| 国产欧美午夜| 奇门遁甲1982国语版免费观看高清 | 国产精品一二三四五区| 久久精品国产秦先生| 国产日韩精品视频| 国产精品视频无码| 国产精品夜夜爽| 91超碰在线电影| 亚洲av永久无码国产精品久久 | 欧美色男人天堂| 天天爽天天爽夜夜爽| 成人精品动漫| 91精品国产综合久久久久久| 秋霞午夜鲁丝一区二区| 99久热这里只有精品视频免费观看| 日韩美女主播在线视频一区二区三区| japan高清日本乱xxxxx| 精品久久97| 日韩精品在线观| 西西444www无码大胆| 欧美日韩一区二区三区视频播放| 色多多国产成人永久免费网站 | 午夜精品久久久久久久99樱桃| 精品国产一二三四区| 91精品韩国| 欧美区一区二区三区| 2025中文字幕| 蜜桃一区二区| 色狠狠久久aa北条麻妃 | 欧美日韩一区免费| 国产又大又黄又猛| 日韩在线精品强乱中文字幕| 亚洲国产第一页| 免费看91的网站| 欧美一区影院| 日韩av理论片| 精品人妻aV中文字幕乱码色欲| 99热精品一区二区| 亚洲欧美日韩不卡一区二区三区| 免费在线看电影| 一本久久精品一区二区| 国内自拍第二页| 色爱综合av| xvideos亚洲人网站| 国产真实夫妇交换视频| 日韩av午夜在线观看| 91久久精品一区二区别| 国产资源在线看| 亚洲黄色录像片| www.四虎成人| 五月亚洲婷婷| 综合激情国产一区| 五月天婷婷综合网| 国精产品一区一区三区mba视频| 国内一区二区三区在线视频| 生活片a∨在线观看| 精品日本高清在线播放 | 精品成人av一区二区在线播放| 免费xxxx性欧美18vr| 国产午夜精品在线| gogogogo高清视频在线| 在线免费亚洲电影| 在线免费看黄色片| 久久精品免费一区二区三区| 欧美一区二区三区免费大片| 国产精品一区二区在线| 天堂网视频在线| 豆国产96在线|亚洲| 日韩激情视频| 亚洲性受xxx喷奶水| 精品日韩一区二区三区| 久草福利资源在线| 日韩国产欧美三级| 欧美日韩三区四区| 在线观看特色大片免费视频| 欧美tickling挠脚心丨vk| 极品美妇后花庭翘臀娇吟小说| 玖玖玖国产精品| 久久久久久亚洲精品不卡4k岛国| 黑人玩欧美人三根一起进| 制服.丝袜.亚洲.另类.中文| 国产视频123区| 日韩国产欧美三级| 日本高清不卡一区二区三| 欧美大胆a人体大胆做受| 亚洲成人网在线| 日本a在线观看| 成人久久18免费网站麻豆| 欧美美女黄色网| 精品中文视频| 不卡av日日日| 精品国产亚洲av麻豆| 亚洲美女精品一区| 色哟哟在线观看视频| 最新国产精品| 不卡日韩av| 嗯~啊~轻一点视频日本在线观看| 亚洲成人精品视频| 国产精品999在线观看| 26uuu久久综合| 久久国产乱子伦免费精品| 日韩电影不卡一区| 奇米影视亚洲狠狠色| 国模精品一区二区| 欧美视频三区在线播放| 成人性生交大片免费看无遮挡aⅴ| 日韩在线一二三区| 亚洲午夜激情| 日韩影片在线观看| 91sa在线看| 国产福利在线视频| 777亚洲妇女| 激情综合五月网| 99视频热这里只有精品免费| 精品久久久久久无码国产| 青青一区二区三区| 亚洲自拍偷拍视频| 精精国产xxxx视频在线播放| 亚洲日本中文字幕| 中文字幕在线2018| 一区二区三区四区在线免费观看 | 日韩在线欧美在线| 国产成人精品无码高潮| 亚洲成av人片一区二区三区| 老牛影视av老牛影视av| 蜜臀av性久久久久蜜臀aⅴ| 法国空姐在线观看免费| 国产精品毛片av| 国产精品美腿一区在线看| 黄色av电影在线播放| 亚洲第一二三四五区| 欧美视频xxxx| 亚洲一区在线观看网站| 性欧美精品男男| 国产大陆a不卡| aaaaaa亚洲| 欧美午夜一区二区福利视频| 欧洲久久久久久| 免费一级欧美在线大片| 热草久综合在线| 久草免费在线观看| 亚洲免费伊人电影在线观看av| 一级黄色片网站| 午夜精品久久久久| 蜜桃av免费观看| 99久久久久久99| 九九精品久久久| 久久xxxx精品视频| 永久免费看av| 欧美日韩中文字幕一区二区三区| 3d蒂法精品啪啪一区二区免费| 午夜精品成人av| 色综合久久88| 欧美精品日韩少妇| 精品美女在线播放| 国产又黄又爽视频| 欧美性猛交xxxx免费看久久久| 丰满少妇被猛烈进入一区二区| 久久九九影视网| 黄色网址在线视频| 国产精品一二三区| 午夜剧场在线免费观看| 日韩av网站在线观看| 精品视频免费在线播放| 欧美成人日本| 自拍另类欧美| 成人激情电影在线| 麻豆av一区| 国产亚洲精品美女久久| 97人摸人人澡人人人超一碰| 国产成+人+综合+亚洲欧美| 青青青国产精品一区二区| 日本在线视频www鲁啊鲁| 操91在线视频| 黄色网页在线看| 在线看日韩欧美| 国产原创av在线| 亚洲男人天堂2024| 香港三日本三级少妇66| 亚洲国产精品悠悠久久琪琪| 亚洲国产999| 日韩视频免费观看高清完整版在线观看 | 影音先锋久久精品| 欧美交换配乱吟粗大25p| 久久久久蜜桃| 中文字幕一区综合| 亚洲成人99| 国产卡一卡二在线| 你懂的国产精品永久在线| 波多野结衣三级在线| 婷婷伊人综合| 99热都是精品| 一区二区电影在线观看| 国产资源第一页| 伊人精品在线| 久久久久久久中文| 久久九九精品| 亚洲黄色av网址| 美日韩一级片在线观看| 国产成年人视频网站| 狠狠久久亚洲欧美| 中文字幕一二三区| 成人免费视频网站在线观看| 国产精品入口麻豆| 99riav一区二区三区| 18禁裸乳无遮挡啪啪无码免费| 久久久美女艺术照精彩视频福利播放| 在线 丝袜 欧美 日韩 制服| 国产日韩精品一区二区三区| 国精产品视频一二二区| 亚洲狼人国产精品| 国产精品二区一区二区aⅴ| 欧美视频专区一二在线观看| 中文天堂在线资源| 日韩欧美自拍偷拍| 日韩一级中文字幕| 国产亚洲人成网站在线观看| 黄色网页在线看| 97激碰免费视频| 日韩av福利| 91亚洲精品视频| 国产精品自在线拍| 涩涩涩999| 欧美~级网站不卡| 久久亚洲中文字幕无码| 秋霞电影一区二区| 国产香蕉精品视频| 久久女同精品一区二区| 免费在线观看黄色小视频| 亚洲成人免费在线观看| 波多野结衣视频免费观看| 91精品福利在线一区二区三区 | 最近2019年手机中文字幕| 色噜噜狠狠狠综合欧洲色8| 欧美伊久线香蕉线新在线| 四虎国产精品免费久久5151| 国产亚洲精品自在久久| 日韩成人a**站| 老太脱裤让老头玩ⅹxxxx| 久久精品国产免费看久久精品| 91玉足脚交白嫩脚丫| 亚洲欧洲三级电影| 青草视频在线观看免费| 日韩亚洲欧美中文三级| 高清国产福利在线观看| 欧美第一黄色网| 欧美综合影院| 免费影院在线观看一区| 欧美三级网页| 国产精品视频中文字幕| 91浏览器在线视频| 福利所第一导航| 欧美日韩三级在线| 性高潮久久久久久久久久| 美女少妇精品视频| 久久亚洲精品中文字幕| 免费日韩av电影| 亚洲精选在线| 师生出轨h灌满了1v1| 1区2区3区欧美| 懂色av蜜臀av粉嫩av喷吹| 亚洲国内精品视频| 日本色护士高潮视频在线观看| 国产免费一区二区三区在线观看 | 久久先锋影音av鲁色资源网| www.超碰在线观看| 欧美精品丝袜久久久中文字幕| 欧美老女人性开放| 2021久久精品国产99国产精品| 亚洲精品v亚洲精品v日韩精品| 制服国产精品| 美女一区二区视频| 男人的天堂av网| 在线观看日韩高清av| 精品av中文字幕在线毛片| 欧美亚洲成人xxx| 乱中年女人伦av一区二区| 69sex久久精品国产麻豆| 国产电影一区二区三区| 欧美国产日韩在线观看成人| 制服丝袜一区二区三区| а√天堂资源地址在线下载| 91精品视频免费看| 888久久久| 女人扒开腿免费视频app| 亚洲精品综合在线| 国产wwwxxx| 欧美激情手机在线视频 | 精品成人18| 天天爱天天做天天操| 激情综合网av| 91杏吧porn蝌蚪| 日韩欧美国产一区在线观看| 先锋影音在线资源站91| 成人欧美一区二区| 国产真实久久| 国产高潮视频在线观看| 精品福利在线视频| 你懂的在线网址| 国产精品扒开腿做| 久久一区二区三区电影| 九九九九九九九九| 夜夜亚洲天天久久| 午夜av免费观看| 国产aⅴ夜夜欢一区二区三区 | 国产精品视频首页| 狠狠精品干练久久久无码中文字幕| 国产福利一区二区三区| 国产第一页在线播放| 日韩精品视频在线免费观看| 婷婷综合六月| 国产精品jizz在线观看老狼| 国产成人av电影免费在线观看| 日韩精品久久久久久久| 亚洲午夜av电影| 国产精品视频一区二区三区| 九九爱精品视频| 中文字幕精品在线不卡| 国产精品久久综合青草亚洲AV| 欧美成人精品一区二区三区| 精品网站aaa| 簧片在线免费看| 亚洲精品视频免费看| 天天操天天干天天插| 国产精品久久久久久久9999| 欧美精品国产一区二区| 黄色短视频在线观看| 欧美日韩不卡视频| av电影在线地址| 伊人色综合影院| 成人99免费视频| 中文字幕一区二区久久人妻| 欧美激情精品久久久久久大尺度 | 久久婷婷久久一区二区三区| 亚洲天堂手机在线| 韩国日本不卡在线| 水蜜桃久久夜色精品一区| 久久久国产精品久久久| 日本久久一区二区三区| 精品国产99久久久久久| 精品日本一区二区| 精品制服美女丁香| 91精品国产乱码久久久张津瑜 | 国产一区二区三区视频播放| 亚洲国产成人精品女人久久久| 日韩久久99| 动漫av免费观看|