Compose 文件(版本3)
Compose 文件是一个定义服务,网络和卷的 YAML 文件。
后缀名采用 .yml 和 .yaml 都可以。
service 定义包含了应用于为服务启动的每个容器的配置,像是传递给 docker run
的命令行参数。同样, network 和 volume 定义类似于 docker network create
和 docker volume create
。配置选项是在构建时期应用的。在 Dockerfile 中指定的选项(如 CMD, EXPOSE,VOLUME,ENV等)同样会被利用,因此不必在 docker-compose 文件中再次指定这些选项。
整体采用 <key>:<option>:<value>
的形式。
1. services
build
build 既可以是一个包含构建context路径的字符串,也可以是指明context和 可选的 Dockerfile 和 参数。例如:
build: ./dir
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
如果指定了 image 和 build,Compose 会用在 image 中指定的镜像名和标签来命名构建的镜像。
这个选项在 swarm 模型中是不奏效的,因为
docker stack
只接受之前构建过的镜像。
CONTEXT
Context 是一个包含 Dockerfile目录的路径或一个 git 仓库的 URL。当 context 值是一个相对路径时,相对的是 Compose 文件的位置。这个目录同样也是传递给 Docker 后台的构建 context。Compose 将构建和标记这个生成的镜像,并在之后利用它。
DOCKERFILE
指定 dockerfile 选项后,Compose 会用这个指定的 dockerfile 来构建。
ARGS
ARGS 指定的是构建过程中的环境变量。
首先需要在 Dockerfile 中指定这些参数:
ARG buildno
ARG password
RUN echo "Build number: $buildno"
RUN script-requiring-password.sh "$password"
之后在 build 键中指定这些参数。可以通过映射或列表传递这些参数值:
build:
context: .
args:
buildno: 1
password: secret
build:
context: .
args:
- buildno=1
- password=secret
YAML 文件中的布尔值(true,false,yes,no,on,off)必须用引号引起了,以便解析器会将它们解释为字符串。
command
重写默认的命令
有以下两种格式:
command: bundl