docker-compose.yml模板文件


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

示例:

version: "3"

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

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

如果使用 build 指令,在 Dockerfile 中設置的選項(例如:CMDEXPOSEVOLUMEENV 等) 將會自動被獲取,無需在 docker-compose.yml 中再次設置。

build

1、

指定 Dockerfile 所在文件夾的路徑(可以是絕對路徑,或者相對 docker-compose.yml 文件的路徑)。 Compose 將會利用它自動構建這個鏡像,然后使用這個鏡像。

version: '3'
services:

  webapp:
    build: ./dir      # dir文佳夾里面有Dockerfile文件

2、

你也可以使用 context 指令指定 Dockerfile 所在文件夾的路徑。

使用 dockerfile 指令指定 Dockerfile 文件名。

使用 arg 指令指定構建鏡像時的變量。

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 「完全啟動」之后才啟動。

 


免責聲明!

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



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