文件格式
以"yml"或者"yaml"为文件后缀
version
设置docker compose解析语法版本号
eg: version: "v1"
services
一个结构体,表示服务配置开始
build
指定dockerfile所在路径,compose将使用该dickerfile构建镜像
eg: build: /dockerfile/path
container_name
设置容器名称,注意如果指定了容器名称,必须保证名称唯一
eg:
container_name: test_php
image
指定要从中启动容器的镜像(如果是通过build方式构建镜像,设置这个参数相当于给镜像重命名)
eg: image: mysql:5.7
ports
暴露端口信息,格式为:(宿主机端口:容器端口);端口号最好大于60,因为yaml解析xx:yy这种格式为60进制
eg: ports:
- 8001:80
expose
暴露端口,不映射到主机,只被链接访问
eg: expose:
22
environment
设置环境变量
eg : environment:
- ENV:dev
env_file
从文件中获取环境变量,可以单个文件路径或者文件列表;
注意:
如果docker-compose -f FILE 指定了模板文件,则 env_file 中路径会基于模板文件路径
如果文件中指定的变量与environment中的变量有冲突,则以后者为准
env文件中支持'#'好注释,使用ENV=dev这样的格式
eg: env_file:
- ./build/env/php-fpm.env
- ./build/env/nginx.env
volumes
挂载卷盘;宿主机目录:容器目录
volumes:
./public:/data/public
links
链接到其他服务中的容器(使用服务名称)
eg: links:
- test_mysql
- test_redis
external_links
链接到docker-compose.yaml外部的容器,可以说非compose管理的容器
eg: external_links:
- test_mysql
- test_redis
command
覆盖容器启动后默认执行的命令
eg: command: php-fpm
extends
基于已有服务进行他拓展
eg: 我们有个公有的php服务(common-php.yaml), 内容如下
common_php:
build: ./build/common_php
command: php-fpm
links:
- jyd_mysql
- jyd_redis
这时候有个新的需求,要求搭建一个新的php,需要设置一个环境变量,我们可以这样做(dev_xx.yaml),内如如下:
dev_xx:
extends:
file: common-php.yaml
service: common_php
environment:
- DEBUG=true
后者的dev_xx.yaml会继承common-php.yaml中的common_php服务
extra_hosts
添加主机名映射额
eg: extra_hosts
- "test.com:10.11.2.12"
- "demo.com:10.12.22.42"