Docker-Compose學(xué)習(xí)使用

轉(zhuǎn)載請注明出處:Docker-Compose學(xué)習(xí)使用

docker

1. 什么是docker-compose

Docker Compose是一個用來定義和運(yùn)行復(fù)雜應(yīng)用的Docker工具夺荒。一個使用Docker容器的應(yīng)用蚓再,通常由多個容器組成掖举。使用Docker Compose不再需要使用shell腳本來啟動容器臀规。
Compose 通過一個配置文件來管理多個Docker容器,在配置文件中,所有的容器通過services來定義,然后使用docker-compose腳本來啟動浸间,停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴服務(wù)的容器吟榴,非常適合組合使用多個容器進(jìn)行開發(fā)的場景发框。

官方文檔 - Docker Compose

2. 安裝

docker-compose安裝可以參考官方文檔:Install Docker Compose

2.1. macOs

Docker Desktop for MacDocker Toolbox 已集成了docker-compose, 所以只要安裝了docker是不需要安裝的煤墙,直接就可以用。

2.2. Linux

在Linux系統(tǒng)中宪拥,可以通過源碼來安裝docker-compose

  1. 從github下載最新版docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 給docker-compose賦予可執(zhí)行權(quán)限
sudo chmod +x /usr/local/bin/docker-compose

最后可以通過以下命令來驗證是否安裝成功:

docker-compose --version

3. 語法

docker-compose 文件命名以.yml.yaml為后綴仿野。

下面先欣賞一下官方文檔中的一個示例:

version: "3"
services:

  redis:
    image: redis:alpine
    ports:
      - "6379"
    networks:
      - frontend
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        constraints: [node.role == manager]

  vote:
    image: dockersamples/examplevotingapp_vote:before
    ports:
      - "5000:80"
    networks:
      - frontend
    depends_on:
      - redis
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  result:
    image: dockersamples/examplevotingapp_result:before
    ports:
      - "5001:80"
    networks:
      - backend
    depends_on:
      - db
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  worker:
    image: dockersamples/examplevotingapp_worker
    networks:
      - frontend
      - backend
    deploy:
      mode: replicated
      replicas: 1
      labels: [APP=VOTING]
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
      placement:
        constraints: [node.role == manager]

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]

networks:
  frontend:
  backend:

volumes:
  db-data:

從上述示例看,整個文檔分為4部分她君,version, services, networks, volumes, 其中services中內(nèi)容最長脚作,下面將一一做個簡單介紹

3.1. version

version是compose的版本,下表是compose版本與docker版本對照表:

Compose file format Docker Engine release
3.7 18.06.0+
3.6 18.02.0+
3.5 17.12.0+
3.4 17.09.0+
3.3 17.06.0+
3.2 17.04.0+
3.1 1.13.1+
3.0 1.13.0+
2.4 17.12.0+
2.3 17.06.0+
2.2 1.13.0+
2.1 1.12.0+
2.0 1.10.0+
1.0 1.9.1.+

3.2. services

services是用來配置定義每個容器啟動參數(shù)缔刹,每個service就是一個容器球涛,services下一級配置即是服務(wù)名稱,例如上面示例中的redis, db等校镐。

3.2.1. image

image是指定服務(wù)的鏡像名稱或鏡像 ID亿扁。如果鏡像在本地不存在,Compose 將會嘗試?yán)∵@個鏡像鸟廓。

例如下面這些格式都是可以的:


image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd

3.2.2. build

服務(wù)除了可以基于指定的鏡像从祝,還可以基于一份 Dockerfile,在使用 up 啟動之時執(zhí)行構(gòu)建任務(wù)引谜,這個構(gòu)建標(biāo)簽就是 build牍陌,它可以指定 Dockerfile 所在文件夾的路徑。Compose 將會利用它自動構(gòu)建這個鏡像员咽,然后使用這個鏡像啟動服務(wù)容器毒涧。

build: /path/to/build/dir

也可以是相對路徑,只要上下文確定就可以讀取到 Dockerfile贝室。

build: ./dir

設(shè)定上下文根目錄契讲,然后以該目錄為準(zhǔn)指定 Dockerfile。

build:
  context: ../
  dockerfile: path/of/Dockerfile

注意 build 都是一個目錄档玻,如果你要指定 Dockerfile 文件需要在 build 標(biāo)簽的子級標(biāo)簽中使用 dockerfile 標(biāo)簽指定怀泊,如上面的例子。
如果你同時指定了 image 和 build 兩個標(biāo)簽误趴,那么 Compose 會構(gòu)建鏡像并且把鏡像命名為 image 后面的那個名字霹琼。

既然可以在 docker-compose.yml 中定義構(gòu)建任務(wù),那么一定少不了 arg 這個標(biāo)簽,就像 Dockerfile 中的 ARG 指令枣申,它可以在構(gòu)建過程中指定環(huán)境變量售葡,但是在構(gòu)建成功后取消,在 docker-compose.yml 文件中也支持這樣的寫法:

build:
  context: .
  args:
    buildno: 1
    password: secret

下面這種寫法也是支持的忠藤,一般來說下面的寫法更適合閱讀挟伙。

build:
  context: .
  args:
    - buildno=1
    - password=secret

與 ENV 不同的是,ARG 是允許空值的模孩。例如:

args:
  - buildno
  - password

這樣構(gòu)建過程可以向它們賦值尖阔。

注意:YAML 的布爾值(true, false, yes, no, on, off)必須要使用引號引起來(單引號、雙引號均可)榨咐,否則會當(dāng)成字符串解析慎皱。

3.2.3. command

使用 command 可以覆蓋容器啟動后默認(rèn)執(zhí)行的命令青团。

command: bundle exec thin -p 3000

也可以寫成類似 Dockerfile 中的格式:

command: [bundle, exec, thin, -p, 3000]

3.2.4. container_name

Compose 的容器名稱格式是:<項目名稱><服務(wù)名稱><序號>
雖然可以自定義項目名稱、服務(wù)名稱,但是如果你想完全控制容器的命名些阅,可以使用這個標(biāo)簽指定:

container_name: app

這樣容器的名字就指定為 app 了五垮。

3.2.5. depends_on

在使用 Compose 時疯搅,最大的好處就是少打啟動命令膨处,但是一般項目容器啟動的順序是有要求的,如果直接從上到下啟動容器佩耳,必然會因為容器依賴問題而啟動失敗遂蛀。
例如在沒啟動數(shù)據(jù)庫容器的時候啟動了應(yīng)用容器,這時候應(yīng)用容器會因為找不到數(shù)據(jù)庫而退出蚕愤,為了避免這種情況我們需要加入一個標(biāo)簽答恶,就是 depends_on,這個標(biāo)簽解決了容器的依賴萍诱、啟動先后的問題悬嗓。
例如下面容器會先啟動 redis 和 db 兩個服務(wù),最后才啟動 web 服務(wù):

version: '2'
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

注意的是裕坊,默認(rèn)情況下使用 docker-compose up web 這樣的方式啟動 web 服務(wù)時包竹,也會啟動 redis 和 db 兩個服務(wù),因為在配置文件中定義了依賴關(guān)系籍凝。

3.2.6.dns

和 --dns 參數(shù)一樣用途周瞎,格式如下:

dns: 8.8.8.8

也可以是一個列表:

dns:
  - 8.8.8.8
  - 9.9.9.9

此外 dns_search 的配置也類似:

dns_search: example.com
dns_search:
  - dc1.example.com
  - dc2.example.com

3.2.7. environment

和 arg 有幾分類似,這個標(biāo)簽的作用是設(shè)置鏡像變量饵蒂,它可以保存變量到鏡像里面声诸,也就是說啟動的容器也會包含這些變量設(shè)置,這是與 arg 最大的不同退盯。
一般 arg 標(biāo)簽的變量僅用在構(gòu)建過程中彼乌。而 environment 和 Dockerfile 中的 ENV 指令一樣會把變量一直保存在鏡像泻肯、容器中,類似 docker run -e 的效果慰照。

environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:
 
environment:
  - RACK_ENV=development
  - SHOW=true
  - SESSION_SECRET

3.2.8. extra_hosts

添加主機(jī)名的標(biāo)簽灶挟,就是往/etc/hosts文件中添加一些記錄,與Docker client的--add-host類似:

extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229"

啟動之后查看容器內(nèi)部hosts:

162.242.195.82  somehost
50.31.209.229   otherhost

3.2.9. labels

向容器添加元數(shù)據(jù)毒租,和Dockerfile的LABEL指令一個意思稚铣,格式如下:

labels:
  com.example.description: "Accounting webapp"
  com.example.department: "Finance"
  com.example.label-with-empty-value: ""
labels:
  - "com.example.description=Accounting webapp"
  - "com.example.department=Finance"
  - "com.example.label-with-empty-value"

3.2.10 links

還記得上面的depends_on吧,那個標(biāo)簽解決的是啟動順序問題墅垮,這個標(biāo)簽解決的是容器連接問題惕医,與Docker client的--link一樣效果,會連接到其它服務(wù)中的容器算色。
格式如下:

links:
 - db
 - db:database
 - redis

使用的別名將會自動在服務(wù)容器中的/etc/hosts里創(chuàng)建曹锨。例如:

172.12.2.186  db
172.12.2.186  database
172.12.2.187  redis

相應(yīng)的環(huán)境變量也將被創(chuàng)建。

3.2.11 ports

映射端口的標(biāo)簽剃允。
使用HOST:CONTAINER格式或者只是指定容器的端口,宿主機(jī)會隨機(jī)映射端口齐鲤。

ports:
 - "3000"
 - "8000:8000"
 - "49100:22"
 - "127.0.0.1:8001:8001"

注意:當(dāng)使用HOST:CONTAINER格式來映射端口時斥废,如果你使用的容器端口小于60你可能會得到錯誤得結(jié)果,因為YAML將會解析xx:yy這種數(shù)字格式為60進(jìn)制给郊。所以建議采用字符串格式牡肉。

3.2.12. volumes

掛載一個目錄或者一個已存在的數(shù)據(jù)卷容器,可以直接使用 [HOST:CONTAINER] 這樣的格式淆九,或者使用 [HOST:CONTAINER:ro] 這樣的格式统锤,后者對于容器來說,數(shù)據(jù)卷是只讀的炭庙,這樣可以有效保護(hù)宿主機(jī)的文件系統(tǒng)饲窿。
Compose的數(shù)據(jù)卷指定路徑可以是相對路徑,使用 . 或者 .. 來指定相對目錄焕蹄。
數(shù)據(jù)卷的格式可以是下面多種形式:

volumes:
  // 只是指定一個路徑逾雄,Docker 會自動在創(chuàng)建一個數(shù)據(jù)卷(這個路徑是容器內(nèi)部的)。
  - /var/lib/mysql
 
  // 使用絕對路徑掛載數(shù)據(jù)卷
  - /opt/data:/var/lib/mysql
 
  // 以 Compose 配置文件為中心的相對路徑作為數(shù)據(jù)卷掛載到容器腻脏。
  - ./cache:/tmp/cache
 
  // 使用用戶的相對路徑(~/ 表示的目錄是 /home/<用戶目錄>/ 或者 /root/)鸦泳。
  - ~/configs:/etc/configs/:ro
 
  // 已經(jīng)存在的命名的數(shù)據(jù)卷。
  - datavolume:/var/lib/mysql

如果你不使用宿主機(jī)的路徑永品,你可以指定一個volume_driver做鹰。

volume_driver: mydriver

3.2.13. networks

加入指定網(wǎng)絡(luò),格式如下:

services:
  some-service:
    networks:
     - some-network
     - other-network

關(guān)于這個標(biāo)簽還有一個特別的子標(biāo)簽aliases鼎姐,這是一個用來設(shè)置服務(wù)別名的標(biāo)簽钾麸,例如:

services:
  some-service:
    networks:
      some-network:
        aliases:
         - alias1
         - alias3
      other-network:
        aliases:
         - alias2

相同的服務(wù)可以在不同的網(wǎng)絡(luò)有不同的別名更振。

3.2.14. network_mode

網(wǎng)絡(luò)模式,與Docker client的--net參數(shù)類似喂走,只是相對多了一個service:[service name] 的格式殃饿。
例如:

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

可以指定使用服務(wù)或者容器的網(wǎng)絡(luò)。

4. 常用命令

docker-compose常用命令可以通過以下命令大致看一下:

docker-compose --help

結(jié)果如下:

Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  -f, --file FILE             Specify an alternate compose file
                              (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name
                              (default: directory name)
  --verbose                   Show more output
  --log-level LEVEL           Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  --no-ansi                   Do not print ANSI control characters
  -v, --version               Print version and exit
  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify
  --tlscacert CA_PATH         Trust certs signed only by this CA
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  --tlskey TLS_KEY_PATH       Path to TLS key file
  --tlsverify                 Use TLS and verify the remote
  --skip-hostname-check       Don't check the daemon's hostname against the
                              name specified in the client certificate
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the Compose file)
  --compatibility             If set, Compose will attempt to convert deploy
                              keys in v3 files to their non-Swarm equivalent

Commands:
  build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information

下面會針對一些比較常用的命令進(jìn)行簡單介紹

4.1. build

當(dāng)修改dockerfile或者docker-compose時芋肠,運(yùn)行docker-compose build 重建鏡像乎芳。 生成鏡像后,可使用docker-compose up啟動

4.2. ps

顯示所有容器信息帖池,默認(rèn)顯示name奈惑、command、state睡汹、ports肴甸。

4.3. kill

強(qiáng)制停止某個正在運(yùn)行的服務(wù)

4.4. logs

打印服務(wù)日志

語法:

logs [options] [SERVICE...]

參數(shù):

--no-color          Produce monochrome output.
-f, --follow        Follow log output
-t, --timestamps    Show timestamps
--tail="all"        Number of lines to show from the end of the logs
                    for each container.

4.5. up

構(gòu)建,(重新)創(chuàng)建囚巴,啟動原在,鏈接一個服務(wù)相關(guān)的容器。鏈接的服務(wù)都將會啟動彤叉,除非他們已經(jīng)運(yùn)行庶柿。默認(rèn)情況, docker-compose up 將會整合所有容器的輸出秽浇,并且退出時浮庐,所有容器將會停止。如果使用 docker-compose up -d 柬焕,將會在后臺啟動并運(yùn)行所有的容器审残。

默認(rèn)情況,如果該服務(wù)的容器已經(jīng)存在斑举, docker-compose up 將會停止并嘗試重新創(chuàng)建他們(保持使用 volumes-from 掛載的卷)搅轿,以保證 docker-compose.yml的修改生效。如果你不想容器被停止并重新創(chuàng)建富玷,可以使用 docker-compose up --no-recreate介时。如果需要的話,這樣將會啟動已經(jīng)停止的容器凌彬。

語法:

up [options] [--scale SERVICE=NUM...] [SERVICE...]

參數(shù):

    -d                         后臺運(yùn)行沸柔,輸出容器的名字.
                               Incompatible with --abort-on-container-exit.
    --no-color                  單色輸出.
    --no-deps                  不啟動link服務(wù).
    --force-recreate           強(qiáng)制重新創(chuàng)建compose服務(wù),即使沒有任何改變铲敛。重新創(chuàng)建后啟動容器
                               Incompatible with --no-recreate.
    --no-recreate               如果容器已經(jīng)存在褐澎,不重新創(chuàng)建.
                               Incompatible with --force-recreate.
    --no-build                 不創(chuàng)建重啟,即使鏡像不存在.
    --build                    重新創(chuàng)建鏡像伐蒋,然后生成容器.
    --abort-on-container-exit  任何容器停止工三,自動停止所有容器.
                               Incompatible with -d.
    -t, --timeout TIMEOUT      超時時間. (default: 10)
    --remove-orphans           移除compose文件中未定義服務(wù)的容器

4.6. create

為服務(wù)創(chuàng)建容器.只是單純的create迁酸,還需要使用start啟動compose

語法:

create [options] [SERVICE...]

參數(shù)

    --force-recreate       重新創(chuàng)建容器,即使他的配置和鏡像沒有改變俭正,不兼容--no-recreate參數(shù)
    --no-recreate          如果容器已經(jīng)存在奸鬓,不需要重新創(chuàng)建. 不兼容--force-recreate參數(shù)
    --no-build             不創(chuàng)建鏡像,即使缺失.
    --build                創(chuàng)建容器前掸读,生成鏡像

4.7. down

停止和刪除容器串远、網(wǎng)絡(luò)、卷儿惫、鏡像澡罚,這些內(nèi)容是通過docker-compose up命令創(chuàng)建的. 默認(rèn)值刪除容器網(wǎng)絡(luò),可以通過指定 rmi volumes參數(shù)刪除鏡像和卷肾请。

語法:

down [options]

參數(shù):

--rmi type          刪除鏡像留搔,類型必須是:
                        'all': 刪除compose文件中定義的所以鏡像.
                        'local': 刪除鏡像名為空的鏡像
-v, --volumes       刪除卷
                        attached to containers.
--remove-orphans    Remove containers for services not defined in the
                        Compose file

4.8. start

啟動一個已經(jīng)存在的服務(wù)容器。

4.9. stop

停止一個已經(jīng)運(yùn)行的容器铛铁,但不刪除它隔显。通過 docker-compose start可以再次啟動這些容器。

4.10. pause

暫停容器服務(wù)饵逐,docker-compose pause 暫停所有服務(wù)荣月。docker-compose pause web,暫停web服務(wù)的容器梳毙。

4.11. unpause

恢復(fù)容器服務(wù),docker-compose unpause 恢復(fù)所有服務(wù)捐下,docker-compose unpause web账锹,恢復(fù)web服務(wù)的容器。

4.12. restart

重啟docker-compose.yml中定義的所有的已停止的和正在運(yùn)行的服務(wù)坷襟。

4.13. rm

刪除已經(jīng)停止的容器奸柬,如果服務(wù)在運(yùn)行,需要先docker-compose stop 停止容器婴程,默認(rèn)情況下廓奕,已掛載的volume中的數(shù)據(jù)不會被刪除,可以使用docker volume ls查看所有的volume情況档叔。所有在容器中并未在volume中的數(shù)據(jù)將被刪除桌粉。

4.14. run

在一個服務(wù)上執(zhí)行一個命令.

語法:

run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...]
        SERVICE [COMMAND] [ARGS...]

參數(shù):

-d                    后臺運(yùn)行,輸出容器名.
-e KEY=VAL            設(shè)置環(huán)境變量參數(shù)衙四,可以使用多次
-u, --user=""         指定運(yùn)行的用戶
--no-deps             不啟動link服務(wù)铃肯,只啟動run的服務(wù).
--rm                  運(yùn)行后刪除容器,后臺運(yùn)行模式除外(-d).
-p, --publish=[]      開放端口
--service-ports       compose文件中配置什么端口传蹈,就映射什么端口.
-T                    禁用TTY.
-w, --workdir=""      設(shè)置工作目錄

例如:

docker-compose run ubuntu ping docker.com

4.15. scale

設(shè)置同一個服務(wù)運(yùn)行的容器個數(shù)押逼。通過 service=num 的參數(shù)來設(shè)置數(shù)量步藕。

5. 參考文檔

官方文檔 - Docker Compose
docker-compose.yml 配置文件編寫詳解
docker-compose:基本語法
docker-compose命令詳解

轉(zhuǎn)載請注明出處:Docker-Compose學(xué)習(xí)使用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挑格,隨后出現(xiàn)的幾起案子咙冗,更是在濱河造成了極大的恐慌,老刑警劉巖漂彤,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雾消,死亡現(xiàn)場離奇詭異,居然都是意外死亡显歧,警方通過查閱死者的電腦和手機(jī)仪或,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來士骤,“玉大人范删,你說我怎么就攤上這事】郊。” “怎么了到旦?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巨缘。 經(jīng)常有香客問我添忘,道長,這世上最難降的妖魔是什么若锁? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任搁骑,我火速辦了婚禮,結(jié)果婚禮上又固,老公的妹妹穿的比我還像新娘仲器。我一直安慰自己,他們只是感情好仰冠,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布乏冀。 她就那樣靜靜地躺著,像睡著了一般洋只。 火紅的嫁衣襯著肌膚如雪辆沦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天识虚,我揣著相機(jī)與錄音肢扯,去河邊找鬼。 笑死担锤,一個胖子當(dāng)著我的面吹牛鹃彻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妻献,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蛛株,長吁一口氣:“原來是場噩夢啊……” “哼团赁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谨履,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤欢摄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笋粟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怀挠,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年害捕,在試婚紗的時候發(fā)現(xiàn)自己被綠了绿淋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡尝盼,死狀恐怖吞滞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盾沫,我是刑警寧澤裁赠,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站赴精,受9級特大地震影響佩捞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蕾哟,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一一忱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谭确,春花似錦帘营、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庄新。三九已至鞠眉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間择诈,已是汗流浹背械蹋。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留羞芍,地道東北人哗戈。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像荷科,于是被迫代替她去往敵國和親唯咬。 傳聞我的和親對象是個殘疾皇子纱注,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容