**:
預設的模板檔案是 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鍵,只允許使用空格 縮排的空格數目不重要,只要相同層級的元素左側對齊即可 表示注釋,從這個...