默認的模板文件名稱爲 docker-compose.yml
,格式爲 YAML 格式。web
示例:redis
version: "3" services: webapp: image: examples/web ports: - "80:80" volumes: - "/data"
注意每一個服務都必須經過 image
指令指定鏡像或 build
指令(須要 Dockerfile)等來自動構建生成鏡像。docker
若是使用 build
指令,在 Dockerfile
中設置的選項(例如:CMD
, EXPOSE
, VOLUME
, ENV
等) 將會自動被獲取,無需在 docker-compose.yml
中再次設置。緩存
build
一、app
指定 Dockerfile
所在文件夾的路徑(能夠是絕對路徑,或者相對 docker-compose.yml 文件的路徑)。 Compose
將會利用它自動構建這個鏡像,而後使用這個鏡像。webapp
version: '3' services: webapp: build: ./dir # dir文佳夾裏面有Dockerfile文件
二、post
你也能夠使用 context
指令指定 Dockerfile
所在文件夾的路徑。ui
使用 dockerfile
指令指定 Dockerfile
文件名。spa
使用 arg
指令指定構建鏡像時的變量。code
version: '3' services: webapp: build: context: ./dir # Dockerfile 所在文件夾的路徑。 dockerfile: Dockerfile-alternate # Dockerfile 文件名 args: # 構建鏡像時的變量 buildno: 1
使用 cache_from
指定構建鏡像的緩存
build: context: . cache_from: # 指定構建鏡像的緩存 - alpine:latest - corp/web_app:3.14
command
覆蓋容器啓動後默認執行的命令。
command: echo "hello world"
container_name
指定容器名稱。默認將會使用 項目名稱_服務名稱_序號
這樣的格式。
container_name: docker-web-container
注意: 指定容器名稱後,該服務將沒法進行擴展(scale),由於 Docker 不容許多個容器具備相同的名稱。
devices
指定設備映射關係。
devices: - "/dev/ttyUSB1:/dev/ttyUSB0"
depends_on
解決容器的依賴、啓動前後的問題。如下例子中會先啓動 redis
db
再啓動 web
version: '3' services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres
注意:web
服務不會等待 redis
db
「徹底啓動」以後才啓動。