1. Service configurationmysql
Compose file 是一个YAML文件,用于定义 services, networks, 和 volumes。其默认路径是./docker-compose.ymlgit
一个service定义包含了这个服务启动的全部容器的配置,这个操做看起来很像是传递命令行参数给docker container create命令。一样,network和volume定义相似于docker network create 和 docker volume create命令。web
与 docker container create 同样,在Dockerfile中指定的选项(好比:CMD、 EXPOSE、 VOLUME、 ENV等)也是同样的,你不须要在docker-compose.yml中再次指定它们。redis
1.1. buildsql
应用于构建时的配置选项docker
build指定了构建上下文路径
数据库
或者,也能够用一个包含context和可选的dockerfile及args的对象类指定缓存
若是在指定build的同时还指定了image,那么将会用指定的镜像来构建网络
1.2. context工具
指向包含Dockerfile目录的路径,或者指向git仓库的url
若是这个值是相对路径,那么它相对的是compose file所在的位置(PS:其实就是当前目录)
1.3. Dockerfile
你也能够用Dockerfile来构建,不过这个时候必须指定context
(PS:dockerfile是用来生成镜像的,也就是说构建的时候能够从image构建,也能够从dockerfile构建,是同样的)
1.4. args
添加构建参数,这些环境变量只能在构建过程当中访问
首先,在Dockerfile中定义变量
而后,在构建的时候给这些变量赋值
或者,下面这种写法也是能够的
注意:若是在Dockerfile中,ARG在FROM指令以前,那么在FROM指令下ARG不可用
你也能够在构建参数中省略它们的值,这种状况下会从Compose运行的环境中取值(PS:其实就是环境变量)
1.5. cache_from
缓存的镜像列表
1.6. shm_size
为这个构建的容器设置/dev/shm分区的大小
1.7. configs
受权某个服务能够访问它下面配置的configs,支持两种语法
1.7.1. 短语法
短语法只指定config名称,受权容器能够访问config,并将其挂载到该容器下的/<config_name>
下面的例子受权redis服务访问my_config和my_other_config配置。my_config的值设置的是./my_config.txt,而my_other_config的值指定的是外部资源,这就意味着该值已经被定义在Docker中了。
1.7.2. 长语法
长语法提供了更细粒度的控制
下面这个例子将在容器下设置my_config和redis_config,设置权限是0440,全部者和所属组都是103,redis服务不能够访问my_other_config配置
1.8. container_name
自定义容器名称,而不是用默认生成的名称
1.9. depends_on
表示服务之间的依赖关系,服务依赖关系致使如下行为:
下面的例子中,db和redis会先于web启动,启动web的时候也会建立并启动db和redis,web中止以前会先中止db和redis
注意:depends_on不会等待db和redis启动好了再启动web
1.10. deploy
只有在集群方式部署的时候这个配置才有效
1.10.1. mode
global(每一个集群节点只有一个容器) 或者 replicated (指定数量的容器)。默认是 replicated
1.11. env_file
添加一个环境变量文件,能够是单个值或者一个列表
若是同一个变量出如今多个文件中,则后者覆盖前者
1.12. environment
添加一个环境变量,能够覆盖env_file中同名的变量值
1.13. expose
在不将端口发布到主机的状况下公开端口
1.14. image
指定容器从哪一个镜像启动,能够是镜像ID,也能够是镜像tag
1.15. network_mode
网络模式
1.16. ports
端口,两种语法
短语法
长语法
1.17. restart
重启策略,默认是no
1.18. ulimits
覆盖容器默认的ulimits
1.19. volumes
挂载主机的路径或volumes名称
你能够为单个服务挂载一个主机路径,这个时候就没有定义顶级的volumes了。可是,若是你但愿多个服务复用一个volumes,那么这个时候就要定义在顶级了。
短语法
指定主机上的路径(HOST:CONTAINER),或者一个访问模式(HOST:CONTAINER:ro)
(PS:稍微解释一下,好比/opt/data:/var/lib/mysql表示挂载到主机的路径是/opt/data,挂载到容器的路径是/var/lib/mysql,其实挂载能够理解为映射)
长语法
1.20. 指定时长与字节值
时长支持的单位:us,ms,s,m,h
字节大小支持的单位:b,k,m,g 或者 b,kb,mb,gb
2. Volume configuration
下面的例子展现了两个服务,一个数据库的数据目录以一个volumn的形式与另外一个服务共享,以致于它能够周期性的备份数据:
顶级volumns能够是空的,此时它使用Docker引擎默认提供的驱动(大多数状况下是local)来配置。你也能够指定下列key
3. 示例
4. 文档
https://docs.docker.com/compose/compose-file/
https://docs.docker.com/compose/reference/