应用YAML文件

应用的字段基本上与Docker compose YAML的格式一致,除了“不支持字段”,基本上一个Compose YAML是可以在平台上直接部署的。

基本字段

image
用于部署服务的镜像,暂不支持带auth的私有镜像仓库。

image: ubuntu:14.04
image: index.alauda.cn/library/postgresql:

command
覆盖掉默认的命令

command: bundle exec thin -p 3000

links
链接到时其他服务,只能链接同一个应用内的服务,可以指定别名(app:alias)

links:
 - db
 - db:database
 - redis

ports
暴露的端口,ports格式不再支持port1:port2,而如下所示

ports:
  - "80"
  - "22"

或者

ports:
  - "80/http"
  - "22/tcp"

并且ports所映射出的端口是都external性质的,就是公网可以访问的。

expose
expose所暴露出的端口是internal性质的, 即公网不可访问。 所有需要暴露的端口,不论external还是internal的都需要显式的在yaml文件中声明, 仅仅在Dockerfile中使用EXPOSE命令来声明端口是无效的。

expose:
- "80"

volumes
挂载一个存储卷,可以指定想要挂载出容器的路径。volumes的格式修改为path:size path即挂载路径,path为绝对路径,size为挂载卷大小单位为G。

如果不指定size,则默认挂载卷大小为10G。例如:

volumes:
  - /data:10
  - /mnt

enviroment
在创建容器时添加进的环境变量,只支持数组方式。环境变量有助于适用于生成不同环境。 支持环境变量的替换。即,某一环境变量可以由当前服务的其他环境变量赋值或者拼接得到。

例如:
DB_HOST: $POSTGRESQL_PORT_5432_TCP_ADDR
DB_HOST的值就是当前服务中的环境变量POSTGRESQL_PORT_5432_TCP_ADDR所指的值。

environment:
  - RACK_ENV=development
  - SESSION_SECRET

扩展字段

size
用于指定服务所需的硬件资源大小。可选范围为{‘XS’, ‘S’, ‘M’, ‘L’, ‘XL’} 例如: size: L

number
用户指定某个服务所开启的实例数量。例如: number: 5

忽略字段

cap_addr
cap_drop
cgroup_parent
restart
dns
dns_search
extra_hosts
container_name
log_driver
log_opt
net
pid
security_opt
ulimits
volumn_driver
cpu_shares
cpuset
hostname
ipc mem_limit
memswap_limit
privileged
readonly
restart
devices
stdin_open
tty
user
labels

不支持字段

dockerfile
env_file
extends
build