赞
踩
这些主题描述了 Compose 文件格式的版本 3。这是最新版本。
Compose 文件格式有多个版本 – 1、2、2.x 和 3.x。下表是一个快速浏览。有关每个版本包含的内容以及如何升级的完整详细信息,请参阅关于版本和升级。
此表显示了哪些 Compose 文件版本支持特定的 Docker 版本。
编写文件格式 | Docker 引擎发布 |
---|---|
撰写规范 | 19.03.0+ |
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+ |
除了表中显示的 Compose 文件格式版本外,Compose 本身也在发布计划中,如Compose 版本中所示,但文件格式版本不一定随着每个版本增加。例如,Compose 文件格式 3.0 在Compose 版本 1.10.0中首次引入,并在后续版本中逐步进行版本化。
最新的 Compose 文件格式由Compose 规范定义,并由 Docker Compose 1.27.0+实现。
以下是 Docker for Beginners 实验室 主题中使用的投票应用程序示例中的示例 Compose 文件,主题为将应用程序部署到 Swarm:
此参考页面上的主题按顶级键的字母顺序组织,以反映 Compose 文件本身的结构。在配置文件中定义部分的顶级键(例如build
、deploy
、depends_on
、 networks
等)与支持它们的选项一起作为子主题列出。这映射到<key>: <option>: <value>
Compose 文件的缩进结构。
Compose 文件是定义 服务、 网络和 卷的YAML文件。Compose 文件的默认路径是../docker-compose.yml
提示:您可以为此文件使用 a
.yml
或扩展名。.yaml
他们都工作。
服务定义包含应用于为该服务启动的每个容器的配置,就像将命令行参数传递给 docker run
. 同样,网络和卷定义类似于 docker network create
和docker volume create
。
与docker run
Dockerfile 中指定的选项一样CMD
, 默认情况下会尊重EXPOSE
, VOLUME
, , 等选项ENV
- 您无需在docker-compose.yml
.
您可以使用类似 Bash 的 ${VARIABLE}
语法在配置值中使用环境变量 - 有关完整详细信息,请参阅变量替换。
本节包含版本 3 中服务定义支持的所有配置选项的列表。
在构建时应用的配置选项。
build
可以指定为包含构建上下文路径的字符串:
- version: "3.9"
- services:
- webapp:
- build: ./dir
或者,作为具有在上下文中指定的路径和可选的 Dockerfile和args的对象:
- version: "3.9"
- services:
- webapp:
- build:
- context: ./dir
- dockerfile: Dockerfile-alternate
- args:
- buildno: 1
如果您指定image
as ,则 Compose 使用 和中指定的可选build
名称来命名构建的图像:webapp
tag
image
- build: ./dir
- image: webapp:tag
这会生成一个名为webapp
并标记为 的图像tag
,由 构建./dir
。
使用 docker stack deploy 时的注意事项
在 swarm 模式下部署堆栈
build
时忽略 该选项 该命令在部署之前不会构建映像。docker stack
context
包含 Dockerfile 的目录的路径或 git 存储库的 url。
当提供的值是相对路径时,它被解释为相对于 Compose 文件的位置。此目录也是发送到 Docker 守护程序的构建上下文。
Compose 使用生成的名称构建和标记它,然后使用该图像。
- <span style="color:#0f161e"><span style="background-color:#ffffff"><span style="color:#0c5176 !important"><span style="background-color:#f5f8fa !important"><code><span style="color:#658b00">build</span>:
- <span style="color:#658b00">context</span>: <span style="color:#cd5555">./dir</span>
- </code></span></span></span></span>
dockerfile
备用 Dockerfile。
Compose 使用备用文件进行构建。还必须指定构建路径。
- build:
- context: .
- dockerfile: Dockerfile-alternate
args
添加构建参数,它们是只能在构建过程中访问的环境变量。
首先,在 Dockerfile 中指定参数:
- # syntax=docker/dockerfile:1
-
- ARG buildno
- ARG gitcommithash
-
- RUN echo "Build number: $buildno"
- RUN echo "Based on commit: $gitcommithash"
然后指定build
键下的参数。您可以传递映射或列表:
- build:
- context: .
- args:
- buildno: 1
- gitcommithash: cdc3b19
- build:
- context: .
- args:
- - buildno=1
- - gitcommithash=cdc3b19
构建参数的范围
在您的 Dockerfile 中,如果您在指令
ARG
之前指定,则在. 如果您需要一个参数在两个地方都可用,请在说明下指定它。有关使用详细信息,请参阅文档中的了解 ARGS 和 FROM 如何交互 部分。FROM
ARG
FROM
FROM
您可以在指定构建参数时省略该值,在这种情况下,它在构建时的值是运行 Compose 的环境中的值。
- args:
- - buildno
- - gitcommithash
使用布尔值时的提示
YAML 布尔值 (
"true"
,"false"
,"yes"
,"no"
,"on"
,"off"
) 必须用引号引起来,以便解析器将它们解释为字符串。
cache_from
以3.2 版文件格式添加
引擎用于缓存解析的图像列表。
- build:
- context: .
- cache_from:
- - alpine:latest
- - corp/web_app:3.14v
labels
在3.3 版文件格式中添加
使用Docker 标签将元数据添加到生成的图像。您可以使用数组或字典。
建议您使用反向 DNS 表示法,以防止您的标签与其他软件使用的标签冲突。
- 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
以3.4 版文件格式添加
RUN
在构建期间设置网络容器连接以获取说明。
- build:
- context: .
- network: host
- build:
- context: .
- network: custom_network_1
用于none
在构建期间禁用网络:
- build:
- context: .
- network: none
shm_size
以3.5 版文件格式添加
设置/dev/shm
此构建容器的分区大小。指定为表示字节数的整数值或表示字节值的字符串。
- build:
- context: .
- shm_size: '2gb'
- build:
- context: .
- shm_size: 10000000
target
以3.4 版文件格式添加
构建在Dockerfile
. 有关详细信息,请参阅 多阶段构建文档。
- build:
- context: .
- target: prod
添加或删除容器功能。查看man 7 capabilities
完整列表。
- cap_add:
- - ALL
-
- cap_drop:
- - NET_ADMIN
- - SYS_ADMIN
使用 docker stack deploy 时的注意事项
在swarm 模式下部署堆栈
cap_add
时忽略andcap_drop
选项
为容器指定一个可选的父 cgroup。
cgroup_parent: m-executor-abcd
使用 docker stack deploy 时的注意事项
在 swarm 模式下部署堆栈
cgroup_parent
时忽略 该选项
覆盖默认命令。
command: bundle exec thin -p 3000v
该命令也可以是一个列表,其方式类似于 dockerfile:
command: ["bundle", "exec", "thin", "-p", "3000"]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。