成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 如何使用Docker部署Go Web應用的實現(xiàn)

如何使用Docker部署Go Web應用的實現(xiàn)

熱門標簽:撫州市城區(qū)地圖標注 新鄉(xiāng)牧野400電話申請 智能電銷機器人真的有用么 企業(yè)辦理400電話收費標準 激光標記地圖標注 中國地圖標注上各個省 高德地圖標注足跡怎么打標 電銷智能機器人試用 百度地圖底圖標注

本文介紹了如何使用Docker以及Docker Compose部署我們的 Go Web 程序。

為什么需要Docker?

使用docker的主要目標是容器化。也就是為你的應用程序提供一致的環(huán)境,而不依賴于它運行的主機。

想象一下你是否也會遇到下面這個場景,你在本地開發(fā)了你的應用程序,它很可能有很多的依賴環(huán)境或包,甚至對依賴的具體版本都有嚴格的要求,當開發(fā)過程完成后,你希望將應用程序部署到web服務器。這個時候你必須確保所有依賴項都安裝正確并且版本也完全相同,否則應用程序可能會崩潰并無法運行。如果你想在另一個web服務器上也部署該應用程序,那么你必須從頭開始重復這個過程。這種場景就是Docker發(fā)揮作用的地方。

對于運行我們應用程序的主機,不管是筆記本電腦還是web服務器,我們唯一需要做的就是運行一個docker容器平臺。從以后,你就不需要擔心你使用的是MacOS,Ubuntu,Arch還是其他。你只需定義一次應用,即可隨時隨地運行。

Docker部署示例

準備代碼

這里我先用一段使用net/http庫編寫的簡單代碼為例講解如何使用Docker進行部署,后面再講解稍微復雜一點的項目部署案例。

package main

import (
 "fmt"
 "net/http"
)

func main() {
 http.HandleFunc("/", hello)
 server := &http.Server{
 Addr: ":8888",
 }
 fmt.Println("server startup...")
 if err := server.ListenAndServe(); err != nil {
 fmt.Printf("server startup failed, err:%v\n", err)
 }
}

func hello(w http.ResponseWriter, _ *http.Request) {
 w.Write([]byte("hello liwenzhou.com!"))
}

上面的代碼通過8888端口對外提供服務,返回一個字符串響應:hello liwenzhou.com!。

創(chuàng)建Docker鏡像

鏡像(image)包含運行應用程序所需的所有東西——代碼或二進制文件、運行時、依賴項以及所需的任何其他文件系統(tǒng)對象。

或者簡單地說,鏡像(image)是定義應用程序及其運行所需的一切。

編寫Dockerfile

要創(chuàng)建Docker鏡像(image)必須在配置文件中指定步驟。這個文件默認我們通常稱之為Dockerfile。(雖然這個文件名可以隨意命名它,但最好還是使用默認的Dockerfile。)

現(xiàn)在我們開始編寫Dockerfile,具體內(nèi)容如下:

注意:某些步驟不是唯一的,可以根據(jù)自己的需要修改諸如文件路徑、最終可執(zhí)行文件的名稱等

FROM golang:alpine

# 為我們的鏡像設置必要的環(huán)境變量
ENV GO111MODULE=on \

 CGO_ENABLED=0 \

 GOOS=linux \

 GOARCH=amd64

# 移動到工作目錄:/build
WORKDIR /build

# 將代碼復制到容器中
COPY . .

# 將我們的代碼編譯成二進制可執(zhí)行文件app
RUN go build -o app .

# 移動到用于存放生成的二進制文件的 /dist 目錄
WORKDIR /dist

# 將二進制文件從 /build 目錄復制到這里
RUN cp /build/app .

# 聲明服務端口
EXPOSE 8888

# 啟動容器時運行的命令
CMD ["/dist/app"]

Dockerfile解析

From
我們正在使用基礎(chǔ)鏡像golang:alpine來創(chuàng)建我們的鏡像。這和我們要創(chuàng)建的鏡像一樣是一個我們能夠訪問的存儲在Docker倉庫的基礎(chǔ)鏡像。這個鏡像運行的是alpine Linux發(fā)行版,該發(fā)行版的大小很小并且內(nèi)置了Go,非常適合我們的用例。有大量公開可用的Docker鏡像,請查看https://hub.docker.com/_/golang

Env
用來設置我們編譯階段需要用的環(huán)境變量。

WORKDIR,COPY,RUN
這幾個命令做的事都寫在注釋里了,很好理解。

EXPORT,CMD
最后,我們聲明服務端口,因為我們的應用程序監(jiān)聽的是這個端口并通過這個端口對外提供服務。并且我們還定義了在我們運行鏡像的時候默認執(zhí)行的命令CMD ["/dist/app"]。

構(gòu)建鏡像

在項目目錄下,執(zhí)行下面的命令創(chuàng)建鏡像,并指定鏡像名稱為goweb_app:

docker build . -t goweb_app

等待構(gòu)建過程結(jié)束,輸出如下提示:

...
Successfully built 90d9283286b7
Successfully tagged goweb_app:latest

現(xiàn)在我們已經(jīng)準備好了鏡像,但是目前它什么也沒做。我們接下來要做的是運行我們的鏡像,以便它能夠處理我們的請求。運行中的鏡像稱為容器。

執(zhí)行下面的命令來運行鏡像:

docker run -p 8888:8888 goweb_app

標志位-p用來定義端口綁定。由于容器中的應用程序在端口8888上運行,我們將其綁定到主機端口也是8888。如果要綁定到另一個端口,則可以使用-p $HOST_PORT:8888。例如-p 5000:8888。

現(xiàn)在就可以測試下我們的web程序是否工作正常,打開瀏覽器輸入http://127.0.0.1:8888就能看到我們事先定義的響應內(nèi)容如下:

hello liwenzhou.com!

分階段構(gòu)建示例

我們的Go程序編譯之后會得到一個可執(zhí)行的二進制文件,其實在最終的鏡像中是不需要go編譯器的,也就是說我們只需要一個運行最終二進制文件的容器即可。

Docker的最佳實踐之一是通過僅保留二進制文件來減小鏡像大小,為此,我們將使用一種稱為多階段構(gòu)建的技術(shù),這意味著我們將通過多個步驟構(gòu)建鏡像。

FROM golang:alpine AS builder

# 為我們的鏡像設置必要的環(huán)境變量
ENV GO111MODULE=on \

 CGO_ENABLED=0 \

 GOOS=linux \

 GOARCH=amd64

# 移動到工作目錄:/build
WORKDIR /build

# 將代碼復制到容器中
COPY . .

# 將我們的代碼編譯成二進制可執(zhí)行文件 app
RUN go build -o app .

###################
# 接下來創(chuàng)建一個小鏡像
###################
FROM scratch

# 從builder鏡像中把/dist/app 拷貝到當前目錄
COPY --from=builder /build/app /

# 需要運行的命令
ENTRYPOINT ["/app"]

使用這種技術(shù),我們剝離了使用golang:alpine作為編譯鏡像來編譯得到二進制可執(zhí)行文件的過程,并基于scratch生成一個簡單的、非常小的新鏡像。我們將二進制文件從命名為builder的第一個鏡像中復制到新創(chuàng)建的scratch鏡像中。有關(guān)scratch鏡像的更多信息,請查看https://hub.docker.com/_/scratch

附帶其他文件的部署示例

這里以我之前《Go Web視頻教程》中的小清單項目為例,項目的Github倉庫地址為:https://github.com/Q1mi/bubble。

如果項目中帶有靜態(tài)文件或配置文件,需要將其拷貝到最終的鏡像文件中。

我們的bubble項目用到了靜態(tài)文件和配置文件,具體目錄結(jié)構(gòu)如下:

bubble
├── README.md
├── bubble
├── conf
│ └── config.ini
├── controller
│ └── controller.go
├── dao
│ └── mysql.go
├── example.png
├── go.mod
├── go.sum
├── main.go
├── models
│ └── todo.go
├── routers
│ └── routers.go
├── setting
│ └── setting.go
├── static
│ ├── css
│ │ ├── app.8eeeaf31.css
│ │ └── chunk-vendors.57db8905.css
│ ├── fonts
│ │ ├── element-icons.535877f5.woff
│ │ └── element-icons.732389de.ttf
│ └── js
│  ├── app.007f9690.js
│  └── chunk-vendors.ddcb6f91.js
└── templates
 ├── favicon.ico
 └── index.html

我們需要將templates、static、conf三個文件夾中的內(nèi)容拷貝到最終的鏡像文件中。更新后的Dockerfile如下

FROM golang:alpine AS builder

# 為我們的鏡像設置必要的環(huán)境變量
ENV GO111MODULE=on \

 CGO_ENABLED=0 \

 GOOS=linux \

 GOARCH=amd64

# 移動到工作目錄:/build
WORKDIR /build

# 復制項目中的 go.mod 和 go.sum文件并下載依賴信息
COPY go.mod .
COPY go.sum .
RUN go mod download

# 將代碼復制到容器中
COPY . .

# 將我們的代碼編譯成二進制可執(zhí)行文件 bubble
RUN go build -o bubble .

###################
# 接下來創(chuàng)建一個小鏡像
###################
FROM scratch

COPY ./templates /templates
COPY ./static /static
COPY ./conf /conf

# 從builder鏡像中把/dist/app 拷貝到當前目錄
COPY --from=builder /build/bubble /

# 需要運行的命令
ENTRYPOINT ["/bubble", "conf/config.ini"]

簡單來說就是多了幾步COPY的步驟,大家看一下Dockerfile中的注釋即可。

Tips: 這里把COPY靜態(tài)文件的步驟放在上層,把COPY二進制可執(zhí)行文件放在下層,爭取多使用緩存。

關(guān)聯(lián)其他容器

又因為我們的項目中使用了MySQL,我們可以選擇使用如下命令啟動一個MySQL容器,它的別名為mysql8019;root用戶的密碼為root1234;掛載容器中的/var/lib/mysql到本地的/Users/q1mi/docker/mysql目錄;內(nèi)部服務端口為3306,映射到外部的13306端口。

docker run --name mysql8019 -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root1234 -v /Users/q1mi/docker/mysql:/var/lib/mysql -d mysql:8.0.19

這里需要修改一下我們程序中配置的MySQL的host地址為容器別名,使它們在內(nèi)部通過別名(此處為mysql8019)聯(lián)通。

[mysql]
user = root
password = root1234
host = mysql8019
port = 3306
db = bubble

修改后記得重新構(gòu)建bubble_app鏡像:

docker build . -t bubble_app

我們這里運行bubble_app容器的時候需要使用--link的方式與上面的mysql8019容器關(guān)聯(lián)起來,具體命令如下:

docker run --link=mysql8019:mysql8019 -p 8888:8888 bubble_app

Docker Compose模式

除了像上面一樣使用--link的方式來關(guān)聯(lián)兩個容器之外,我們還可以使用Docker Compose來定義和運行多個容器。

Compose是用于定義和運行多容器 Docker 應用程序的工具。通過 Compose,你可以使用 YML 文件來配置應用程序需要的所有服務。然后,使用一個命令,就可以從 YML 文件配置中創(chuàng)建并啟動所有服務。

使用Compose基本上是一個三步過程:

  1. 使用Dockerfile定義你的應用環(huán)境以便可以在任何地方復制。
  2. 定義組成應用程序的服務,docker-compose.yml 以便它們可以在隔離的環(huán)境中一起運行。
  3. 執(zhí)行 docker-compose up命令來啟動并運行整個應用程序。

我們的項目需要兩個容器分別運行mysql和bubble_app,我們編寫的docker-compose.yml文件內(nèi)容如下:

# yaml 配置
version: "3.7"
services:
 mysql8019:
 image: "mysql:8.0.19"
 ports:
  - "33061:3306"
 command: "--default-authentication-plugin=mysql_native_password --init-file /data/application/init.sql"
 environment:
  MYSQL_ROOT_PASSWORD: "root1234"
  MYSQL_DATABASE: "bubble"
  MYSQL_PASSWORD: "root1234"
 volumes:
  - ./init.sql:/data/application/init.sql
 bubble_app:
 build: .
 command: sh -c "./wait-for.sh mysql8019:3306 -- ./bubble ./conf/config.ini"
 depends_on:
  - mysql8019
 ports:
  - "8888:8888"

這個 Compose 文件定義了兩個服務:bubble_app 和 mysql8019。其中:

bubble_app
使用當前目錄下的Dockerfile文件構(gòu)建鏡像,并通過depends_on指定依賴mysql8019服務,聲明服務端口8888并綁定對外8888端口。

mysql8019
mysql8019 服務使用 Docker Hub 的公共 mysql:8.0.19 鏡像,內(nèi)部端口3306,外部端口33061。

這里需要注意一個問題就是,我們的bubble_app容器需要等待mysql8019容器正常啟動之后再嘗試啟動,因為我們的web程序在啟動的時候會初始化MySQL連接。這里共有兩個地方要更改,第一個就是我們Dockerfile中要把最后一句注釋掉:

# Dockerfile
...
# 需要運行的命令(注釋掉這一句,因為需要等MySQL啟動之后再啟動我們的Web程序)
# ENTRYPOINT ["/bubble", "conf/config.ini"]

第二個地方是在bubble_app下面添加如下命令,使用提前編寫的wait-for.sh腳本檢測mysql8019:3306正常后再執(zhí)行后續(xù)啟動Web應用程序的命令:

command: sh -c "./wait-for.sh mysql8019:3306 -- ./bubble ./conf/config.ini"

當然,因為我們現(xiàn)在要在bubble_app鏡像中執(zhí)行sh命令,所以不能在使用scratch鏡像構(gòu)建了,這里改為使用debian:stretch-slim,同時還要安裝wait-for.sh腳本用到的netcat,最后不要忘了把wait-for.sh腳本文件COPY到最終的鏡像中,并賦予可執(zhí)行權(quán)限哦。更新后的Dockerfile內(nèi)容如下:

FROM golang:alpine AS builder

# 為我們的鏡像設置必要的環(huán)境變量
ENV GO111MODULE=on \

 CGO_ENABLED=0 \

 GOOS=linux \

 GOARCH=amd64

# 移動到工作目錄:/build
WORKDIR /build

# 復制項目中的 go.mod 和 go.sum文件并下載依賴信息
COPY go.mod .
COPY go.sum .
RUN go mod download

# 將代碼復制到容器中
COPY . .

# 將我們的代碼編譯成二進制可執(zhí)行文件 bubble
RUN go build -o bubble .

###################
# 接下來創(chuàng)建一個小鏡像
###################
FROM debian:stretch-slim

COPY ./wait-for.sh /
COPY ./templates /templates
COPY ./static /static
COPY ./conf /conf


# 從builder鏡像中把/dist/app 拷貝到當前目錄
COPY --from=builder /build/bubble /

RUN set -eux; \

 apt-get update; \

 apt-get install -y \

 --no-install-recommends \

 netcat; \

  chmod 755 wait-for.sh

# 需要運行的命令
# ENTRYPOINT ["/bubble", "conf/config.ini"]

所有的條件都準備就緒后,就可以執(zhí)行下面的命令跑起來了:

docker-compose up

完整版代碼示例,請查看我的github倉庫:https://github.com/Q1mi/deploy_bubble_using_docker。

總結(jié)

使用Docker容器能夠極大簡化我們在配置依賴環(huán)境方面的操作,但同時也對我們的技術(shù)儲備提了更高的要求。對于Docker不管你是熟悉抑或是不熟悉,技術(shù)發(fā)展的車輪都滾滾向前。

參考鏈接:

https://levelup.gitconnected.com/complete-guide-to-create-docker-container-for-your-golang-application-80f3fb59a15e

到此這篇關(guān)于如何使用Docker部署Go Web應用的實現(xiàn)的文章就介紹到這了,更多相關(guān)Docker部署Go Web內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標簽:邯鄲 西安 忻州 延安 臨汾 南通 辛集 海西

巨人網(wǎng)絡通訊聲明:本文標題《如何使用Docker部署Go Web應用的實現(xiàn)》,本文關(guān)鍵詞  如何,使用,Docker,部署,Web,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何使用Docker部署Go Web應用的實現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于如何使用Docker部署Go Web應用的實現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    成人在线观看免费播放| 亚洲v在线看| 国产成人免费在线观看| 亚洲欧洲综合另类| 日韩精品一区二区三区在线观看| 成人精品一区二区不卡视频| 激情久久中文字幕| 日韩伦理视频| 免费黄在线观看| 亚洲美女淫视频| 成人在线播放免费观看| 欧美日韩高清不卡| 国产乱码精品一区二区三区日韩精品| 国产一区二区三区不卡视频网站| 国产免费一区二区| 日韩和欧美的一区二区| 国产美女极品在线| 免费中文字幕日韩| 在线观看黄网站免费继续| 一本大道久久a久久综合| 成年人在线免费观看| 日韩乱码在线视频| 男人的天堂av网站| 中文另类视频| 欧美一区二区大胆人体摄影专业网站| 日本三级在线播放完整版| 深夜福利在线观看直播| 真人做人试看60分钟免费| 久久中文字幕在线观看| 青青草国产在线播放| 久久99国产精品麻豆| 九色成人国产蝌蚪91| 欧美美女性视频| 丰满人妻一区二区| 中文字幕99| 88xx成人网| 天天干在线视频论坛| 国产麻豆一区二区三区精品视频| 丁香花高清电影在线观看完整版| 国内自拍视频在线观看| 精品国产一区久久久| 国产精品一区二区x88av| 香蕉视频国产在线观看| 91高清视频在线| 日韩欧美中文字幕一区二区| 亚洲精品98久久久久久中文字幕| 色妞www精品视频| 韩国成人精品a∨在线观看| 免费不卡av在线| 久久久久久久久久久久91| 污视频网站入口| 免费成人黄色| 精品久久sese| 精久久久久久久久久久| 亚洲美女在线免费观看| 一区二区国产精品视频| 免费a漫导航| 天天精品视频| 野花国产精品入口| 99热这里只有精品在线播放| 亚洲AV无码一区二区三区性| 免费一级片网址| 动漫精品一区一码二码三码四码| 亚洲福利影视| 国产精品久久久久久麻豆一区软件| 精品国产av无码一区二区三区| 亚洲乱妇老熟女爽到高潮的片| 亚洲精品国产精| 国产欧美久久久久久久久| 亚洲成人一二三| 日韩欧美国产精品一区| 黄色免费视频网站| 亚洲乱码国产乱码精品精| www亚洲欧美| 麻豆mv在线观看| 国产精品一区二区在线看| 日韩欧美视频免费观看| 久久av中文| 免费看日批视频| 自拍视频国产精品| 91最新在线观看| 亚洲国产精品毛片| 国产1区2区3区中文字幕| 免费成人在线视频观看| 亚洲激情不卡| 亚洲自拍偷拍区| 日本在线视频www| 国产精品福利在线观看| 超鹏97在线| 无码人妻丰满熟妇区五十路| 伊人电影在线观看| 国产在线播放一区二区三区| 精品国产网站地址| 日韩精品欧美成人高清一区二区| 97久久精品在线| 91精品视频在线播放| av片在线观看永久免费| 日本电影欧美片| 亚洲综合欧美| 成年人在线免费看片| 久久国产精品波多野结衣av| 午夜免费视频在线国产| 亚洲天堂免费在线观看视频| 亚洲免费伊人电影在线观看av| 成人在线免费看视频| 国产91精品一区二区麻豆网站| 天堂av中文在线观看| 亚洲免费一级电影| 日韩欧美视频一区二区三区四区| 午夜精品久久久内射近拍高清| 香蕉亚洲视频| 人人澡人人透人人爽| 欧美大胆a人体大胆做受| 老妇女50岁三级| 黄色免费直接看| 欧美色欧美亚洲高清在线视频| 国产成人a视频高清在线观看| 日本亚洲色大成网站www久久| 在线亚洲不卡| 秋霞在线午夜| 免费av网站在线播放| 97香蕉碰碰人妻国产欧美| 日本精品一区二区三区在线播放| 9国产精品视频| 六月丁香婷婷在线| 在线国产亚洲欧美| 国产精品伦一区二区三级视频| 色偷偷色偷偷色偷偷在线视频| 国产精品视频久久一区| 亚洲日本va午夜在线影院| 欧美激情1区| 欧美成人综合网站| 国产精品免费视频一区| 欧美激情在线狂野欧美精品| 在线视频欧美亚洲| 中文字幕一区二区三区四| 91高清视频在线| 日韩国产精品毛片| 欧美日韩中文字幕在线| 欧美性猛交xxxx乱大交少妇| 日韩理论片一区二区| 97人人爽人人喊人人模波多| 麻豆精品视频在线| 中文字幕在线观看av| 亚洲午夜日本在线观看| 国内老司机av在线| 粉嫩av一区二区三区在线播放| 国产精品尤物| 中文字幕久久久av一区| 日韩激情毛片| 亚洲国产成人精品久久久国产成人一区| 国产蜜臀一区二区打屁股调教| 91精品视频网站| 日本tube24xxxxx| 久久久久国产精品无码免费看| 国产精品丝袜黑色高跟| 亚洲欧美制服中文字幕| 精品久久中文字幕久久av| 亚洲乱亚洲高清| 在线观看制服搞黄视频| 精品国产aⅴ一区二区三区东京热| 欧美女孩性生活视频| 免费在线观看不卡| 亚洲乱亚洲乱妇| av电影天堂一区二区在线| 亚洲香蕉av在线一区二区三区| 好吊色一区二区三区| 成av人片一区二区| 视频成人永久免费视频| 伊人春色在线观看| 午夜剧场免费在线观看| 麻豆av一区二区三区| 亚洲午夜影视影院在线观看| 日韩欧美亚洲一区二区三区| 26uuu亚洲综合色| 日韩精品在线免费播放| 91免费视频黄| **日韩最新| fc2成人免费人成在线观看播放| 亚洲黄色在线网站| 国产精久久一区二区| 天堂中文在线网| 久久综合久久综合久久综合| 日韩在线观看成人| 国产小视频自拍| 夜夜躁狠狠躁日日躁2021日韩| 欧美优质美女网站| 粗暴蹂躏中文一区二区三区| 国产免费av电影| 美女又爽又黄视频毛茸茸| 伊人久久久大香线蕉综合直播| 在线综合亚洲欧美在线视频| 国产福利视频一区二区三区| 国产毛片毛片毛片毛片毛片毛片| 久久国产精品久久精品| 成人黄色理论片| 欧美自拍第一页| 欧美日韩精品久久久| 狠狠久久亚洲欧美专区| 国产精品视频免费一区| 神马久久影视大全| 黄视频免费在线看| 91视频99| 欧美成人一区二区三区四区| 国产又大又黑又粗免费视频| 制服丝袜在线播放| 怡红院红怡院欧美aⅴ怡春院| 中文字幕乱码一区| 中文字幕免费在线观看| 国产一二三区av| 精品国产一区二区三区av性色| 亚洲大黄网站| 香蕉视频999| 国产浮力第一页| 99精品欧美一区二区三区小说| 日韩国产欧美精品一区二区三区| 国产精品xxx在线观看| 日韩精品久久一区| 国产亚洲福利社区一区| 性一交一乱一伧国产女士spa| 日韩在线视频国产| 日韩三级免费观看| 五月天婷婷综合社区| 欧美美女在线直播| 久久精品1区| 十九岁完整版在线观看好看云免费| 在线国产视频观看| 四虎在线精品| 国产一级做a爰片久久毛片男| 污污的视频网站在线观看| 在线能看的av网址| 亚洲成人网在线播放| 韩国成人av| 午夜精品久久久久久久星辰影院| 成人黄色免费网站在线观看| 欧美与欧洲交xxxx免费观看| 日本国产一区二区三区| 国产桃色电影在线播放| 99亚洲国产精品| 久久人人97超碰精品888| 亚洲激情自拍| 免费高清在线一区| 91精品产国品一二三产区| 成人激情视频在线播放| 精品动漫3d一区二区三区免费| aaaa黄色片| 久久国产精品99久久人人澡| 日日夜夜一区二区| 久久国产乱子精品免费女| 97视频国产在线| 91在线视频导航| 最近高清中文在线字幕在线观看1| 成人在线免费电影网站| 国产成人亚洲综合a∨猫咪| 精品视频一区二区| 国产91久久久久蜜臀青青天草二| 精品一区二区三区视频日产| 一区二区在线高清视频| 国产中文字幕在线免费观看| 日韩va在线观看| 欧美老女人性生活视频| 校园春色 亚洲| 国产精品视频福利一区二区| 一区二区高清不卡| 影音先锋中文字幕第一页| 一个人看的免费网站www视频| 一级性生活免费视频| 国产suv一区二区| 四虎影音在线| 国产成人av电影在线播放| 国产精品美女高潮无套| 二区视频在线观看| 91在线视频国产| 欧美伦理视频在线观看| 免费在线观看羞羞视频| 久久久久国产一区| 疯狂做受xxxⅹ高潮视频免费| 国产精选久久| jjzz在线观看| 日韩av在线一区| 亚洲免费av观看| 欧美性在线视频| 在线观看电影av| 久久久久久久9| 国产成人精品在线观看| 国产熟妇一区二区三区四区| 日韩一区二区中文| 91麻豆精品国产综合久久久久久| 色偷偷男人天堂| 国产一区二区在线观看免费播放| 国产123在线| japanese国产| www.成人免费视频| 夜色资源站国产www在线视频| 国产 欧美 日韩 在线| 国产精品影片在线观看| 欧美午夜性视频| 亚洲黄色小说网站| 蜜桃传媒九九九| 污的网站在线观看| 亚洲视频一区二区免费在线观看| 精品国产一区二区精华| 91久久精品美女高潮| av一本久道久久波多野结衣| 欧美日韩视频在线一区二区| 91精品在线观| 伊人av在线| 亚洲不卡一区二区三区| 春暖花开亚洲一区二区三区| 91久久精品午夜一区二区| 成人精品在线观看| 精品国产一区二区三区香蕉沈先生| 原千岁中文字幕| 欧美视频专区一二在线观看| 午夜福利123| 91精品国产综合久久久久久久久| 亚洲图片有声小说| 欧美成人直播| 国产农村妇女精品一区二区| 日韩久久电影| 最近中文字幕mv在线一区二区三区四区| 久久久久久久久四区三区| 另类综合日韩欧美亚洲| 天天干夜夜艹| 日韩在线免费高清视频| 亚洲深夜av| 91麻豆国产福利精品| 日韩美女免费视频|