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…

相关文章
相关标签/搜索