Compose版本与Docker版本兼容表
Compose文件版本 | Docker 版本 |
---|---|
3.8 | 19.03.0+ |
3.7 | 18.06.0+ |
3.6 | 18.02.0+ |
3.5 | 17.12.0+ |
3.4 | 17.09.0+ |
3.3 | 17.06.0+ |
3.2 | 17.04.0+ |
3.1 | 1.13.1+ |
3.0 | 1.13.0+ |
2.4 | 17.12.0+ |
2.3 | 17.06.0+ |
2.2 | 1.13.0+ |
2.1 | 1.12.0+ |
2.0 | 1.10.0+ |
1.0 | 1.9.1.+ |
docker-compose.yml 文件结构示例
version: "3.8" services: redis: image: redis:alpine ports: - "6379" networks: - frontend deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure networks: frontend: backend: volumes: db-data:
Service 配置
YAML文件配置了三个节点,services,networks和volumes。默认的文件地址是./docker-compose.yml
配置文件的后缀可以是 .yml,也可以是 .yaml,两者都支持。
build
构建配置选项,指定构建目录。
version: "3.8" services: webapp: build: ./dir
可以指定Dockerfile文件名,还可以带参数。
version: "3.8" services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate args: buildno: 1
构建的时候也可以指定镜像
build: ./dir image: webapp:tag
CONTEXT
指定构建目录或仓库url
build: context: ./dir
DOCKERFILE
指定新的Dockerfile文件
build: context: . dockerfile: Dockerfile-alternate
ARGS
添加构建过程需要用到的环境变量参数
首先在Dockerfile中添加参数
ARG buildno ARG gitcommithash RUN echo "Build number: $buildno" RUN echo "Based on commit: $gitcommithash"
然后在docker-compose.yml文件服务中添加参数,映射具体的参数值
build: context: . args: buildno: 1 gitcommithash: cdc3b19
build: context: . args: - buildno=1 - gitcommithash=cdc3b19
YAML 布尔值 ("true", "false", "yes", "no", "on", "off") 必须使用引号,当作字符串来进行传输.
CACHE_FROM
version 3.2 版本后添加
使用缓存的镜像列表
build: context: . cache_from: - alpine:latest - corp/web_app:3.14
LABELS
version 3.3 版本添加
使用Docker labels为生成的镜像添加元数据,可以使用数组或是字典。
build: context: . labels: com.example.description: "Accounting webapp" com.example.department: "Finance" com.example.label-with-empty-value: ""
build: context: . labels: - "com.example.description=Accounting webapp" - "com.example.department=Finance" - "com.example.label-with-empty-value"
NETWORK
version 3.4 版本添加
为构建时期的RUN指定设置网络连接。
build: context: . network: host
build: context: . network: custom_network_1
Use none to disable networking during build:
build: context: . network: none
SHM_SIZE
version 3.5 版本添加
设置构建容器/dev/shm分区的大小,可以使用字节整形值或字符串值设置大小。
build: context: . shm_size: '2gb'
build: context: . shm_size: 10000000
TARGET
version 3.4 版本添加
如果Dockerfile中有多个构建阶段,可使用TARGET来指定具体阶段。
build: context: . target: prod
cap_add, cap_drop
添加或删除容器功能。
cap_add: - ALL cap_drop: - NET_ADMIN - SYS_ADMIN
cgroup_parent
为容器指定任意父容器组。
cgroup_parent: m-executor-abcd
command
覆盖默认命令
command: bundle exec thin -p 3000
可以是个列表,类似dockerfile文件中的CMD
command: ["bundle", "exec", "thin", "-p", "3000"]