compose是用來定義和運行多個Docker容器。html
好比一個簡單的web項目,除了web服務以外,咱們可能要須要數據庫容器、註冊中心容器等等。那咱們須要:git
但有了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編排的服務都會在這個網絡下
build:指定 Dockerfile
所在文件夾的路徑
image:指定爲鏡像名稱或鏡像 ID。
depends_on: 解決容器的依賴、啓動前後的問題。但只解決容器啓動前後,但沒解決服務徹底啓動前後,能夠用wait for it
network_mode: 設置網絡模式
network:配置網絡
expose:暴露端口,但不映射到宿主機,只被鏈接的服務訪問。
ports:暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER)
格式
devices: 指定設備映射關係。
volumes:數據卷所掛載路徑設置。能夠設置宿主機路徑 (HOST:CONTAINER
) 或加上訪問模式 (HOST:CONTAINER:ro
)。