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


Docker compose 簡介

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

比如一個簡單的web項目,除了web服務之外,我們可能要需要數據庫容器、注冊中心容器等等。那我們需要:

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

但有了docker-compose,我們可以在docker-compose.yml定義這些操作,然后只要一個命令docker-compose up -d就行

例子

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

項目目錄:

-springcloud

​ --feign

​ ---src

​ ---target

​ ---Dockerfile

​ --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 大殺器來部署服務 上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM