docker-compose文件语法

文件格式

以"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"
坚持原创技术分享,您的支持将鼓励我继续创作!