YAML 檔案語法

2021-08-10 22:05:30 字數 3199 閱讀 8094

**:

預設的模板檔案是 docker-compose.yml,其中定義的每個服務都必須通過 image 指令指定映象或 build 指令(需要 dockerfile)來自動構建。

其它大部分指令都跟 docker run 中的類似。

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

image

指定為映象名稱或映象 id。如果映象在本地不存在,compose 將會嘗試拉去這個映象。

例如:

image: ubuntu

image: orchardup/postgresql

image: a4bc65fd

指定 dockerfile 所在資料夾的路徑。 compose 將會利用它自動構建這個映象,然後使用這個映象。

build: /path/to/build/dir

覆蓋容器啟動後預設執行的命令。

command: bundle exec thin -p 3000
鏈結到其它服務中的容器。使用服務名稱(同時作為別名)或服務名稱:服務別名 (service:alias) 格式都可以。

links:

- db

- db:database

- redis

使用的別名將會自動在服務容器中的 /etc/hosts 裡建立。例如:

172.17.2.186 db

相應的環境變數也將被建立。

鏈結到 docker-compose.yml 外部的容器,甚至 並非 compose 管理的容器。引數格式跟 links 類似。

external_links:

- redis_1

- project_db_1:mysql

- project_db_1:postgresql

暴露埠資訊。

使用宿主:容器 (host:container)格式或者僅僅指定容器的埠(宿主將會隨機選擇埠)都可以。

- 「3000」

- 「8000:8000」

- 「127.0.0.1:8001:8001」

注:當使用 host:container 格式來對映埠時,如果你使用的容器埠小於 60 你可能會得到錯誤得結果,因為 yaml 將會解析 xx:yy 這種數字格式為 60 進製。所以建議採用字串格式。

暴露埠,但不對映到宿主機,只被連線的服務訪問。

僅可以指定內部埠為引數

expose:

- 「3000」

- 「8000」

卷掛載路徑設定。可以設定宿主機路徑 (host:container) 或加上訪問模式 (host:container:ro)。

volumes:

-/var/lib/mysql

-cache/:/tmp/cache

-~/configs:/etc

/configs/

:ro

從另乙個服務或容器掛載它的所有卷。

volumes_from:

- service_name

- container_name

設定環境變數。你可以使用陣列或字典兩種格式。

只給定名稱的變數會自動獲取它在 compose 主機上的值,可以用來防止洩露不必要的資料。

environment:

- rack_env=development

- session_secret

environment:

-debug=false

-send_emails=false

web:

extends:

file: common.yml

ports:

- "8000:8000"

links:

- db

environment:

- debug=true

db:image: postgres

設定網路模式。使用和 docker client 的 –net 引數一樣的值。

net: "bridge"

net: "none"

net: "container:[name or id]"

net: "host"

跟主機系統共享程序命名空間。開啟該選項的容器可以相互通過程序 id 來訪問和操作。

pid: 「host

配置 dns 伺服器。可以是乙個值,也可以是乙個列表。

dns: 8.8.8.8

dns:

-8.8.8.8

-9.9.9.9

新增或放棄容器的 linux 能力(capabiliity)。

cap_add:

- all

cap_drop:

- net_admin

- sys_admin

配置 dns 搜尋域。可以是乙個值,也可以是乙個列表。

dns_search: example.com

dns_search:

- domain1.example

.com

- domain2.example

.com

working_dir, entrypoint, user, hostname, domainname, mem_limit, privileged, restart, stdin_open, tty, cpu_shares

這些都是和 docker run 支援的選項類似。

cpu_shares:

73working_dir: /code

entrypoint: /code/entrypoint.sh

user: postgresql

hostname: foo

domainname: foo.com

mem_limit:

1000000000

privileged: true

restart: always

stdin_open: true

tty: true

YAML檔案語法簡介

yaml是一種利於人們讀寫的資料格式.現在很多系統例如spring,ansible,ror等都支援yaml配置檔案,yaml由於其良好的可讀性,越來月流行。此外在大多數變成語言中有使用 yaml 的庫.這個頁面提供乙個正確的 yaml 語法的基本概述,它被用來描述乙個 playbooks 我們的配置...

yaml基本語法

yaml中的字串預設不用加雙引號或者單引號,如果加了雙引號或者單引號,則單引號和雙引號在yaml中有不同的用法,雙引號不會轉義字串裡面的特殊字元 特殊字元會作為本身想表達的意思 例 張三 n李四 會表示出 張三 然後是乙個換行 然後才是 李四 單引號會轉義字串裡面的特殊字元 例 張三 n李四 表示出...

yaml 語法簡介

優點 yaml是一種簡潔的非標記語言,yaml以資料為中心,使用空白,縮排,分行組織資料,從而使得表示更加簡潔易讀。缺點 對格式的要求太過嚴格。語法規則 大小寫敏感 使用縮排表示層級關係 縮排時不允許使用tab鍵,只允許使用空格 縮排的空格數目不重要,只要相同層級的元素左側對齊即可 表示注釋,從這個...