docker-compose.yml配置詳解

每一個docker-compose.yml必須定義image或者build中的一個,其它的是可選的。html

image

指定鏡像tag或者ID。示例:mysql

image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd
複製代碼

ps:在version 1裏同時使用image和build是不容許的,version 2則能夠,若是同時指定了二者,會將build出來的鏡像打上名爲image標籤web

build

用來指定一個包含Dockerfile文件的路徑。通常是當前目錄.。Fig將build並生成一個隨機命名的鏡像。redis

ps:在version 1裏bulid僅支持值爲字符串。version 2裏支持對象格式。sql

build: ./dir

build:
  context: ./dir
  dockerfile: Dockerfile-alternate
  args:
    buildno: 1
複製代碼
  • context:路徑
  • dockerfile:須要替換默認docker-compose的文件名
  • args:爲構建(build)過程當中的環境變量,用於替換Dockerfile裏定義的ARG參數,容器中不可用。

command

用來覆蓋缺省命令。示例:docker

command: bundle exec thin -p 3000ubuntu

也支持數組形式:數組

command: [bundle, exec, thin, -p, 3000]bash

env_file

從文件中獲取環境變量,能夠爲單獨的文件路徑或列表。 若是經過 docker-compose -f FILE 指定了模板文件,則 env_file 中路徑會基於模板文件路徑。 若是有變量名稱與 environment 指令衝突,則之後者爲準。服務器

env_file: .env
env_file:
- ./common.env
- ./apps/web.env
- /opt/secrets.env
複製代碼

環境變量文件中每一行必須符合格式,支持 # 開頭的註釋行。

# common.env: Set Rails/Rack environment
RACK_ENV=development
複製代碼

links

用於連接另外一容器服務,如須要使用到另外一容器的mysql服務。能夠給出服務名和別名;也能夠僅給出服務名,這樣別名將和服務名相同。同docker run --link。示例:

links:
 - db
 - db:mysql
 - redis
複製代碼

ports

用於暴露端口。同docker run -p。示例:

ports:
 - "3000"
 - "8000:8000"
 - "49100:22"
 - "127.0.0.1:8001:8001"
複製代碼

ps:冒號前面是主機上的端口,冒號後面是容器內部的端口。

expose

expose提供container之間的端口訪問,不會暴露給主機使用。同docker run --expose

expose:
 - "3000"
 - "8000"
複製代碼

volumes

掛載數據卷。同docker run -v。示例:

volumes:
 - /var/lib/mysql
 - cache/:/tmp/cache
 - ~/configs:/etc/configs/:ro
複製代碼

volumes_from

掛載數據卷容器,掛載是容器。同docker run --volumes-from。示例:

volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw
複製代碼

ps:container:container_name格式僅支持version 2

environment

添加環境變量。同docker run -e。能夠是數組或者字典格式:

environment:
  RACK_ENV: development
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SESSION_SECRET
複製代碼

depends_on

用於指定服務依賴,通常是mysql、redis等。 指定了依賴,將會優先於服務建立並啓動依賴。

links也能夠指定依賴。

external_links

連接搭配docker-compose.yml文件或者Compose以外定義的服務,一般是提供共享或公共服務。格式與links類似:

external_links:
 - redis_1
 - project_db_1:mysql
 - project_db_1:postgresql
複製代碼

ps:external_links連接的服務與當前服務必須是同一個網絡環境。

extra_hosts

添加主機名映射。

extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229"
複製代碼

將會在/etc/hosts建立記錄:

162.242.195.82  somehost
50.31.209.229   otherhost
複製代碼

extends

繼承自當前yml文件或者其它文件中定義的服務,能夠選擇性的覆蓋原有配置。

extends:
  file: common.yml
  service: webapp
複製代碼

service必須有,file可選。service是須要繼承的服務,例如web、database。

net

設置網絡模式。同docker的--net參數。

net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"
複製代碼

dns

自定義dns服務器。

dns: 8.8.8.8
dns:
  - 8.8.8.8
  - 9.9.9.9
複製代碼

附原文連接:www.cnblogs.com/52fhy/p/599…

相關文章
相關標籤/搜索