docker-compose.yml模板文件

默認的模板文件名稱爲 docker-compose.yml,格式爲 YAML 格式。web

示例:redis

version: "3"

services:
  webapp:
    image: examples/web
    ports:
      - "80:80"
    volumes:
      - "/data"

注意每一個服務都必須經過 image 指令指定鏡像或 build 指令(須要 Dockerfile)等來自動構建生成鏡像。docker

若是使用 build 指令,在 Dockerfile 中設置的選項(例如:CMDEXPOSEVOLUMEENV 等) 將會自動被獲取,無需在 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 「徹底啓動」以後才啓動。

相關文章
相關標籤/搜索