Docker 入門教程(4)——docker-compse 服務編排

Docker compose 簡介

compose是用來定義和運行多個Docker容器。html

好比一個簡單的web項目,除了web服務以外,咱們可能要須要數據庫容器、註冊中心容器等等。那咱們須要:git

  1. 定義各個容器的Dockerfile文件,docker build -t
  2. 映射硬盤保存數據 docker volume create,而後mount
  3. 設置網絡實現容器橋連 docker network create
  4. 。。。。

但有了docker-compose,咱們能夠在docker-compose.yml定義這些操做,而後只要一個命令docker-compose up -d就行web

例子

以spring cloud 的入門hello world爲例子部署spring

項目目錄:docker

-springcloud數據庫

​ --feign網絡

​ ---src微服務

​ ---targetui

​ ---Dockerfilespa

​ --hello-server

​ ---src

​ ---target

​ ---Dockerfile

​ --register

​ ---src

​ ---target

​ ---Dockerfile

​ --docker-compose.yml

register的Dockerfile定義爲上一章的例子,其餘的兩個的Dockerfile跟register的差很少,只需更改端口和jar包名。

docker-compose的定義以下:

version: '2.1'
services:
  registry:
    image: test/register
    build: ./register
    ports:
      - 8761:8761

  hello:
    image: test/hello
    ports:
      - 8080:8080
    build: ./hello-server
    depends_on:
      - registry

  feign:
    image: test/feign
    ports:
      - 8082:8082
    build: ./feign
    depends_on:
      - registry

而後在docker-compose.yml 目錄下執行docker-compose up -d

docker-compose 在執行up命令時會建立默認網絡,而後docker-compose編排的服務都會在這個網絡下

docker-compose.yml經常使用命令

build:指定 Dockerfile 所在文件夾的路徑

image:指定爲鏡像名稱或鏡像 ID。

depends_on: 解決容器的依賴、啓動前後的問題。但只解決容器啓動前後,但沒解決服務徹底啓動前後,能夠用wait for it

network_mode: 設置網絡模式

network:配置網絡

expose:暴露端口,但不映射到宿主機,只被鏈接的服務訪問。

ports:暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式

devices: 指定設備映射關係。

volumes:數據卷所掛載路徑設置。能夠設置宿主機路徑 (HOST:CONTAINER) 或加上訪問模式 (HOST:CONTAINER:ro)。

參考資料

Docker——從入門到實踐

使用Spring Cloud與Docker實戰微服務

Docker(四):Docker 三劍客之 Docker Compose

使用docker-compose 大殺器來部署服務 上

相關文章
相關標籤/搜索