# Docker+Gitlab+Gitlab-ci+Harbor+Rancher+Jhipster # ——Docker環(huán)境下,使用Gitlab+Gitlab-ci持續(xù)集成砾赔、Harbor做私有鏡...

內(nèi)容尚不完善,做做記錄

關(guān)鍵組成部分

  • 操作系統(tǒng)CentOS7
  • 容器運行環(huán)境Docker
  • 遠端版本控制代碼倉庫Gitlab
  • 持續(xù)集成工具Gitlab-runner
  • 私有鏡像倉庫Harbor
  • 鏡像管理Rancher
  • 微服務(wù)注冊中心與配置中心jhipster-registry
  • 微服務(wù)網(wǎng)關(guān)jhipster-gateway

未來默認配置

  • Harbor的GUI操作地址端口:10.101.88.101:8088
  • Rancher的GUI操作地址端口:10.101.88.102:8080(只能)
  • Gitlab地址:10.101.88.100:8081
  • registry:8761
  • gateway:80

一青灼、操作系統(tǒng)安裝+操作

  • 至centOS官網(wǎng)下載centOS7安裝包進行安裝(操作系統(tǒng)操作不再贅述暴心,默認已經(jīng)會一些基礎(chǔ)的Linux系統(tǒng)操作)

二、Docker安裝杂拨、配置奕坟、操作

2.1 說明(方便理解)

  • 是什么贰剥?
  • 是一個開源的應(yīng)用容器引擎巍举,簡單可類比為一整個打包溶其、開箱使用的過程
  • 為什么要使用?運行原理策橘?
  • 開發(fā)者可以將自己通過各種技術(shù)開發(fā)的應(yīng)用+所依賴的軟件包炸渡、環(huán)境一并打包起來成一個docker鏡像,然后在任何裝有docker引擎的地方運行丽已。
  • 優(yōu)點蚌堵?
  • 由于其基于LXC的輕量級虛擬化的特點(可理解為運行時只運行一套應(yīng)用所需最基礎(chǔ)的內(nèi)容環(huán)境,不需要像傳統(tǒng)部署應(yīng)用一樣在硬件上先運行操作系統(tǒng)沛婴、再運行操作系統(tǒng)內(nèi)其他基礎(chǔ)服務(wù)吼畏、再運行運行環(huán)境、再運行我們開發(fā)的應(yīng)用)瘸味,docker相比KVM之類最明顯的特點就是啟動快宫仗,資源占用小。類比:一次打包應(yīng)用和所依賴環(huán)境配件成一個集裝箱發(fā)貨(而且里面沒有其他無關(guān)雜貨)旁仿,收貨開箱即用藕夫,也正如docker這個單詞的意思
  • 版本支持
  • 在CentOS6.8是可以支持docker孽糖,但是有些特性無法使用,因此至少使用3.8的內(nèi)核版本毅贮,建議是使用3.10版本以上办悟。國內(nèi)生產(chǎn)環(huán)境很多都是使用CentOS,所以一般使用CentOS7即可滩褥。當然如果是Ubuntu/Debian/Deepin系列的發(fā)行版本也是支持的病蛉。
  • 軟件源和鏡像源
  • 許多軟件源等資源服務(wù)器在國外一般速度都很慢,這里將docker的軟件源設(shè)置成阿里的瑰煎,并且未來使用的一些鏡像源也會設(shè)置成阿里的(速度快而且和國外服務(wù)器版本同步做的挺好)

2.2 安裝(默認采用root用戶權(quán)限)

  • docker依賴于系統(tǒng)的一些必要的工具铺然,可以提前安裝

      yum install -y yum-utils device-mapper-persistent-data lvm2
    
  • 設(shè)置軟件源(阿里云)

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安裝docker社區(qū)版

      yum -y install docker-ce
    
  • 啟動docker服務(wù)

      systemctl start docker
    
  • 查看版本方式

      docker version
    

2.3 配置

  • 設(shè)置鏡像源(阿里),下載一些公共鏡像會快些

  • 打開阿里云——>在所有功能里面進入容器鏡像服務(wù)——>鏡像加速器

  • 找到專屬的鏡像加速器地址類似:https://------.mirror.aliyuncs.com 復(fù)制

  • 修改docker的一項配置文件(這里采用vim編輯器進行編輯,使用root用戶權(quán)限)

         vim /etc/docker/daemon.json
    
  • 添加如下內(nèi)容(如果已經(jīng)有酒甸,則將連接粘貼進去列表即可):

         {
             "registry-mirrors":[
                                 "https://------.mirror.aliyuncs.com"
                                 (如果要指定自己的其他鏡像倉庫還可繼續(xù)在這個列表添加)
                                 ]
         }
    
  • 設(shè)置允許使用不安全的源(比如自己搭建的未使用https的)魄健,因為新版docker默認使用https,不設(shè)置會報錯

  • 如上在 /etc/docker/daemon.json文件內(nèi)加入以下內(nèi)容:

         {
             "insecure-registries":["ip/域名:端口"]
         }
    
  • 以上兩個內(nèi)容操作完務(wù)必重新加載配置并重啟docker

      systemctl daemon-reload
      systemctl restart docker
    
  • 新裝docker可能遇到"can not connect to docker daemon at unix:///----------",解決方法:執(zhí)行重新加載配置并重啟docker插勤,操作在設(shè)置鏡像源中最后一步沽瘦。

2.4 基本常用操作

  • 打包鏡像

  • 拉取鏡像

      docker pull ip:port/鏡像路徑+名
    
  • 保存鏡像為本地壓縮文件(用于手動轉(zhuǎn)移)

      docker save ip:port/鏡像路徑+名 -o /本地路徑.../fileName.tar
    
  • 加載鏡像文件

      docker load 
    
  • 運行鏡像

2.5 Dockerfile

  • dockerfile是用于制定鏡像的文本文件,內(nèi)部定義了各類用于制定一個鏡像所需要的命令农尖,最后由docker build指令讀取并打包定制完成這個鏡像析恋。

  • 詳細教程可查看https://www.runoob.com/docker/docker-dockerfile.html

2.6docker-compose工具

  • Docker-Compose項目是Docker官方的開源項目,負責實現(xiàn)對Docker容器集群的快速編排盛卡。用戶可以在docker-compose.yml內(nèi)預(yù)先配置整個系統(tǒng)需要用到的各個docker鏡像容器信息助隧、配置信息、運行環(huán)境變量等窟扑,并使用本工具的docker-compose命令創(chuàng)建和啟動定義好的所有鏡像容器服務(wù)喇颁÷┙。可以順便也裝上嚎货,后期harbor會使用
2.6.1安裝和使用
  • 官方文檔

      https://docs.docker.com/compose/install/
    
  • 安裝下載最新二進制文件到/usr/local/bin目錄下(此目錄是直接可運行目錄放這里就不用做軟連接)

      sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" \
              -o /usr/local/bin/docker-compose
    
  • 添加執(zhí)行權(quán)限

      sudo chmod +x /usr/local/bin/docker-compose
    
  • 運行命令查看版本,測試可用性

      docker-compose --version
    

三蔫浆、GitLab安裝殖属、運行、配置

3.1 說明

  • Gitlab是一個開源的遠端代碼托管工具平臺瓦盛,功能和github洗显、gitee等,但由于開源原环,可以被大家自行修改挠唆、部署應(yīng)用,一般被企業(yè)用來做自己內(nèi)部的代碼托管平臺
  • 這里也是看中了gitlab比較出色的持續(xù)集成工具

3.2 安裝并運行(由于已經(jīng)安裝docker嘱吗,所以可以直接拉取gitlab發(fā)布的鏡像即可開箱即用玄组、包括其需要的其他組件)

  • 官網(wǎng)文檔:

      https://docs.gitlab.com/omnibus/docker/README.html
    
  • 注釋:

      -d                  后臺運行僅返回一個容器id,這樣避免終端接下來進入某個運行鏡像的交互
      --name              給docker運行容器名
      --env               環(huán)境變量
      --volume(-v)        掛載數(shù)據(jù)(為了把容器內(nèi)數(shù)據(jù)持久化到宿主機不丟失) 宿主機的某個路徑:容器內(nèi)部的使用路徑     
      --link              服務(wù)連接 目標服務(wù)的服務(wù)名(自己取的):默認服務(wù)名
      --publish(-p)       端口映射 宿主機端口:容器內(nèi)運行端口
      --restart always    自動重啟(看情況使用,萬一存在服務(wù)連接,則關(guān)注啟動的先后順序)
    
  • 安裝Gitlab所需要的組件 postgresql俄讹、redis

      docker run --name gitlab-postgresql -d \
          --env 'DB_NAME=gitlabhq_production' \
          --env 'DB_USER=gitlab' \
          --env 'DB_PASS=password' \
          --volume /home/ws/docker/volumes/gitlab/postgresql:/var/lib/postgresql \
          sameersbn/postgresql:9.4-12
    
      docker run --name gitlab-redis -d \
          --volume /home/ws/docker/volumes/gitlab/redis:/var/lib/redis \
          sameersbn/redis:latest
    
  • 安裝Gitlab

      docker run --name gitlab -d \
          --link gitlab-postgresql:postgresql \
          --link gitlab-redis:redisio \
          --publish 10022:22 \
          --publish 8081:8081 \
          --publish 4431:443 \
          --volume /home/ws/docker/volumes/gitlab/gitlab/log:/var/log/gitlab \
          --volume /home/ws/docker/volumes/gitlab/gitlab/opt:/var/opt/gitlab \
          --volume /home/ws/docker/volumes/gitlab/gitlab/conf:/etc/gitlab \
          gitlab/gitlab-ce:latest
    

3.3 訪問和配置

  • 運行后打開xx.xx.xx.xx:8081(服務(wù)器地址)發(fā)現(xiàn)是打不開的哆致,因為我們只是把內(nèi)部8081地址映射了出來,實際上內(nèi)部運行監(jiān)聽的端口是默認80

    • 解決辦法:更改掛載目錄下的girlab.rb文件患膛,做如下修改摊阀,即可正常訪問

        nginx['listen_port'] = 8081 
      
  • 運行后發(fā)現(xiàn)項目的git地址是容器id,并不是正確的地址

    • 解決辦法:更改掛載目錄下的girlab.rb文件踪蹬,做如下修改胞此,修改容器內(nèi)的運行端口,由于上面已經(jīng)做了映射跃捣,所以即可正常訪問

        external_url 'http://xx.xx.xx.xx:8081'
      
    • 順便加入以下配置豌鹤,更改ssh訪問方式端口

        gitlab_rails['GITLAB_SHELL_SSH_PORT'] = 8081
      
  • 重啟容器

      docker restart gitlab
    

四、GitLab-runner安裝枝缔、配置

4.1 說明

  • gitlab-ci持續(xù)集成功能借助于gitlab-runner執(zhí)行更優(yōu)

4.2 安裝與運行

  • 拉取并運行

      docker run --name gitlab-runner -d \
          --restart always \
          --volume /home/ws/docker/volumes/gitlab/runner:/etc/gitlab-runner \
          --volume /var/run/docker.sock:/var/run/docker.sock \
          gitlab/gitlab-runner:latest
    
    1. 此處的掛載十分重要2几怼!--volume /var/run/docker.sock:/var/run/docker.sockT感丁灵临!由于采用了docker作為執(zhí)行器,runner在執(zhí)行時會運行docker命令趴荸。然而我們采用了docker環(huán)境下安裝runner儒溉,runner在自己的容器內(nèi)沒有docker環(huán)境從而不能運行docker,會進行報錯Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

      解決:讓runner通過某種方式在宿主機運行docker命令发钝。由于docker命令實質(zhì)上是訪問本地/var/run/docker.sock路徑進行的一次請求(可以參考官方文檔)顿涣,那么我們只需要吧宿主機的/var/run/docker.sock路徑和runner容器內(nèi)/var/run/docker.sock路徑掛載就可以巧妙解決這個問題

    2. 由此引發(fā)!T秃馈涛碑!runner采用docker安裝時會配置默認鏡像,然而孵淘,這個默認鏡像在運行時也會用到docker命令蒲障,但是它的內(nèi)部沒有,所以比如在runner運行打包docker鏡像的時候常常會報錯:I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: No such file or directory

      解決:配置runner的配置文件config.toml中的默認鏡像掛載:/var/run/docker.sock:/var/run/docker.sock

4.3 配置(這里使用全局配置一個共享的runner)

  • 打開gitlab用root用戶登錄->設(shè)置->Overview->Runners

  • 關(guān)閉系統(tǒng)防火墻瘫证、注意gitlab和gitlab-runner的版本匹配問題(全部安裝最新的一般沒問題)揉阎,以避免注冊失敗

  • 注冊成為gitlab所使用的runner

      docker exec -it gitlab-runner gitlab-ci-multi-runner register
    
  • 這里將產(chǎn)生交互式操作,以進行配置背捌,按照提問填入相應(yīng)內(nèi)容即可,部分內(nèi)容來自之前打開的頁面

     **Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):-------填gitlab的訪問地址**
    
         http://10.101.80.101:8081/
     **Please enter the gitlab-ci token for this runner:-------填頁面上第三點的token**
    
         B9jx_m2wGzyzTz****之類
    
     **Please enter the gitlab-ci description for this runner::-------填描述**
    
         隨便填
    
     **Please enter the gitlab-ci tags for this runner (comma separated):-------填標簽(注意這個tag需要在以后項目的.gitlab-ci.yml文件中指定毙籽,以便指定使用哪一個runner)**
    
         隨便填
    
     **Please enter the executor: kubernetes, custom, docker, shell, virtualbox, docker-ssh+machine, docker-ssh, parallels, ssh, docker+machine::-------執(zhí)行方式,這里一般使用docker毡庆,其支持功能更強大,具體參考官方文檔表格中的列舉**
    
         docker
    
     **please enter the default Docker image (e.g. ruby:2.6)::-------默認鏡像坑赡,這里可以隨便填一個docker鏡像比如openjdk:8,這是防止在未來的gitlab-ci.yml文件里面漏填了image參數(shù)**
    
         openjdk:8
    
  • 至此一個共享的runner創(chuàng)建完成

  • 注意:在設(shè)置中runner的tag選項巡扇,如果在gitlab-ci.yml中沒有指定tag,則需要把tag選項允許無標記的作業(yè)垮衷,才能被使用

4.4 Maven的優(yōu)化配置

  • 因為我們使用了docker作為執(zhí)行器厅翔,在使用gitlab-runner自動執(zhí)行maven相關(guān)操作時,會啟動一個新容器進行執(zhí)行搀突,因為容器內(nèi)沒有maven和一些依賴包刀闷,所以每次流水線都會自動下載maven-wrapper.properties內(nèi)部定義的對應(yīng)版本的maven和各種所需依賴。而新下載的maven因為沒有配置國內(nèi)鏡像因而下載依賴也很慢,導(dǎo)致流水線嚴重緩慢仰迁。
    • 解決:把容器內(nèi)存放maven相關(guān)內(nèi)容的文件夾掛載到宿主機中甸昏,持久化,并且手動改setting配置國內(nèi)或者內(nèi)部鏡像倉庫
      • 為了方便管理徐许,首先單獨指定容器內(nèi)的maven相關(guān)文件夾目錄(默認情況下都會放在緩存文件夾/cache)

          在流水線gitlab.ci文件中的編譯部分加入?yún)?shù):
          -Dmaven.repo.local = /root/.m2
        
      • 打開之前已經(jīng)持久化到宿主機的gitlab-runner的目錄施蜜,修改config.toml文件

          把執(zhí)行器內(nèi)目錄掛載出來,這里要賦予讀寫權(quán)限即:rw
           volumes = [
              "宿主機目錄自己定:/root/.m2:rw"
              "/home/ws/docker/volumes/gitlab/runner-m2:/root/.m2:rw"]
        
      • 然后就可以打開宿主機目錄內(nèi)的下載好的maven修改setting,同時其他依賴包也會被下載到這里

      • 此方式適用于其他任何需要做執(zhí)行器內(nèi)部數(shù)據(jù)持久化的操作,不僅僅是maven

五雌隅、私有鏡像倉庫Harbor的使用

5.1說明

  • 一些我們自己打包的鏡像不需要傳到公共鏡像倉庫中翻默,而且公共鏡像倉庫管理不便,安全性和效率也得不到保證恰起,這時候就需要一個私有鏡像倉庫修械,harbor是vmware公司開發(fā)的一款開源企業(yè)級Docker Registry,綜合了作為鏡像倉庫的管理检盼、權(quán)限等強大功能肯污。

5.2安裝使用

  • harbor將采用本地安裝而非docker安裝

  • 官方文檔:

     https://goharbor.io/docs/2.1.0/install-config/
    
  • 準備環(huán)境

    • docker、docker-compose環(huán)境吨枉,已安裝

    • 獲取離線安裝包(-P 下載到指定目錄)

        wget -P /home/ws/horbor https://github.com/goharbor/harbor/releases/download/v2.1.0/harbor-offline-installer-v2.1.0.tgz
      
    • 解壓壓縮包到/home/ws/harbor目錄

        cd /home/ws/harbor
        tar -zxvf ./harbor-offline-installer-v2.1.0.tgz
      
    • 下載速度慢的話可以通過其他方式下載下來然后挪到自己定義的目錄進行解壓

    • 進入解壓完的目錄蹦渣,復(fù)制一份默認配置文件harbor.yml.tmpl命名為harbor.yml(此文件harbor安裝啟動后默認會讀取,如果不復(fù)制貌亭,則會以默認配置文件.tmpl為準柬唯。早期版本的harbor配置文件是harbor.cfg)

        cp ./harbor.yml.tmpl ./harbor.yml
      
    • 修改配置信息,更改admin密碼属提、運行端口权逗、數(shù)據(jù)持久路徑

        vim ./harbor.yml
      
    • 在vim編輯器內(nèi)修改:

        http.port為自己的端口
        harbor_admin_password為自己的密碼
        data_volume為自己定義的路徑
        https及其子參數(shù)全部注釋(這里我們采用http方式美尸,所以務(wù)必將https部分注釋掉冤议,
                同時注意其他任何使用本機器上的harbor做鏡像倉庫的,一定要把docker的daemon.json中加入本機ip地址可信)
      
    • 安裝并運行

        ./install.sh
      
    • 瀏覽器內(nèi)打開配置的地址登錄即可訪問

5.3maven使用dockerfile-maven-plugin插件打包推送鏡像至私有鏡像倉庫

- 參考http://www.reibang.com/p/3929099711ec
- 在pom.xml內(nèi)引入插件

        <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>${dockerfile-maven-plugin.version}</version>
                
                <executions>
                    <execution>
                    <id>default</id>
                    <goals>
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                    </execution>
                </executions>

                <configuration>
                    <!--未來的鏡像地址师坎,同時也是鏡像名恕酸,這里的ip端口就是我們自己部署的IP端口-->
                    <repository>10.101.80.157/platform/${project.artifactId}</repository>
                     <!--標簽,一般是鏡像:后面的版本號-->
                    <tag>${project.version}</tag>
                    <contextDirectory>${project.build.directory}</contextDirectory>
                    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                </configuration>
            </plugin> 
- 編寫一份dockerfile運用指令:

        mvn package dockerfile:build
- 遇到unauthorized: unauthorized to access repository: 胯陋。蕊温。袱箱。。义矛。发笔。沒有登錄
    - 如果是手動推送的話,手動登錄即可凉翻,但是當我們使用maven插件時我們需要吧賬號密碼交給maven了讨,即我們需要在maven的setting.conf中配置server

    <servers>
      <server>
        <id>鏡像倉庫地址IP端口</id>
        <username>賬號</username>
        <password>密碼</password>
      </server>
    </servers>
- 當使用gitlab-runner并采用docker方式流水線打包推送時,我們需要把之前掛載出來的.m2中的maven進行配置制轰,以便于在容器中的maven知道賬號密碼進行登錄推送前计。

六、Rancher容器管理平臺

6.1說明

  • 這里使用rancher1.x版本垃杖,相比2.x版本男杈,1.x定位為各類容器編排工具的上層管理平臺,而2.x移除了其他編排工具调俘,只剩下k8s并進行了拓展伶棒,2.x的模式實質(zhì)上就是阿里云等云廠商整合后的k8s服務(wù)等等。
  • 1和2的區(qū)別:https://www.zhihu.com/question/309076492/answer/579260940

6.2安裝使用

  • 官方文檔:

      https://docs.rancher.cn/docs
    
  • 使用docker拉取彩库、配置并運行rancher

      docker run --name rancher -d \
              --restart=always \
              -p 8080:8080 \
              -v /home/ws/docker/volumes/rancher-server/mysql:/var/lib/mysql \
              rancher/server
    
  • 瀏覽器打開地址進行訪問測試

  • 操作說明:

    • 分級:環(huán)境-應(yīng)用-服務(wù)/容器

        環(huán)境:rancher上面可以管理多個環(huán)境苞冯,每個環(huán)境內(nèi)可以管理多個“基礎(chǔ)架構(gòu)”標簽內(nèi)的環(huán)境,
                比如主機侧巨、存儲等等舅锄。抽象理解為你管理著一個機房,里面有好多臺服務(wù)器司忱,即整個環(huán)境皇忿。
                
        應(yīng)用:每一個環(huán)境下,可以部署多個應(yīng)用坦仍,應(yīng)用即我們具體話的一套系統(tǒng)鳍烁、軟件、平臺等繁扎。
                抽象理解為我們在這幾臺服務(wù)器上裝一些軟件總合成一套可以為用戶提供服務(wù)的系統(tǒng)
                
        服務(wù)/容器:微服務(wù)架構(gòu)下幔荒,一個應(yīng)用由多個服務(wù)共同配合完成,每個服務(wù)又可以跑多份梳玫,
                每一份即一個獨立docker容器爹梁。抽象理解為部署分布式應(yīng)用。
      

七提澎、微服務(wù)注冊中心與配置中心jhipster-registry

7.1說明

  • jhipster-registry由jhipster團隊開發(fā)并開源姚垃,他是一個綜合了注冊中心和配置中心等功能的應(yīng)用。他內(nèi)部集成了Eureka用于服務(wù)發(fā)現(xiàn)和注冊盼忌、并且集成了對springcloud項目的配置和管理等功能积糯。所以與其使用傳統(tǒng)的注冊中心不如直接使用它來完成這些一條龍服務(wù)掂墓。

7.2使用

  • 克隆原始項目,從github下載(git各類操作默認已熟悉)

      git clone https://github.com/jhipster/jhipster-registry.git
    
  • 編譯運行項目

八看成、微服務(wù)網(wǎng)關(guān)jhipster-gateway

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末君编,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子川慌,更是在濱河造成了極大的恐慌啦粹,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窘游,死亡現(xiàn)場離奇詭異唠椭,居然都是意外死亡,警方通過查閱死者的電腦和手機忍饰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門贪嫂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艾蓝,你說我怎么就攤上這事力崇。” “怎么了赢织?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵亮靴,是天一觀的道長。 經(jīng)常有香客問我于置,道長茧吊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任八毯,我火速辦了婚禮搓侄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘话速。我一直安慰自己讶踪,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布泊交。 她就那樣靜靜地躺著乳讥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪廓俭。 梳的紋絲不亂的頭發(fā)上云石,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音白指,去河邊找鬼留晚。 笑死,一個胖子當著我的面吹牛告嘲,可吹牛的內(nèi)容都是我干的错维。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼橄唬,長吁一口氣:“原來是場噩夢啊……” “哼赋焕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仰楚,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤隆判,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后僧界,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侨嘀,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年捂襟,在試婚紗的時候發(fā)現(xiàn)自己被綠了咬腕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡葬荷,死狀恐怖涨共,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宠漩,我是刑警寧澤举反,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站扒吁,受9級特大地震影響火鼻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜雕崩,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一凝危、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晨逝,春花似錦蛾默、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至趁窃,卻和暖如春牧挣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背醒陆。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工瀑构, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刨摩。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓寺晌,卻偏偏與公主長得像世吨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呻征,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344