docker-compose.yml 文件的编写版本3


Docker Compose 配置文件的构建参数说明

1 build

在构建时应用的配置选项。

build 可以指定为包含构建上下文路径的字符串

 自己构建镜像,构建镜像根据相对路径 ./dir 目录下的 dockerfile 文件构建  

version: "3.9"
services:
  webapp:
    build: ./dir

或者,作为一个在上下文中指定路径的对象,以及可选的Dockerfileargs

构建的镜像是根据 相对路径./dir下的 Dockerfile-alternate 文件

version: "3.9"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1

如果指定了image, 会打一个tag 是webapp:tag的镜像,默认的镜像的tag是 conpose的名字_service名字

version: "3.9"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1
image: webapp:tag

2  context

包含 Dockerfile 的目录的路径,或 git 存储库的 url。

当提供的值是相对路径时,它被解释为相对于 Compose 文件的位置。此目录也是发送到 Docker 守护程序的构建上下文。

Compose 使用生成的名称构建并标记它,然后使用该镜像 

build:
  context: ./dir

3  dockerfile

指定构建的镜像的文件,这时根据Dockerfile-alternate 构建镜像

build:
  context: .
  dockerfile: Dockerfile-alternate

4 args

添加参数,只能在镜像构建过程中访问的环境变量,需要在dockerfilr 中指定参数

# syntax=docker/dockerfile:1

ARG buildno
ARG gitcommithash

RUN echo "Build number: $buildno"
RUN echo "Based on commit: $gitcommithash"

这些args 在build键下,可以这样映射

build:
  context: .
  args:
    buildno: 1
    gitcommithash: cdc3b19
build:
  context: .
  args:
    - buildno=1
    - gitcommithash=cdc3b19

注:

在你的 Dockerfile 中,如果你ARGFROM指令指定, ARG在构建指令下是不可用的FROM如果您需要一个参数在两个地方都可用,请在FROM指令下指定它 有关用法详细信息,请参阅文档中了解 ARGS 和 FROM 如何交互部分。

您可以在指定构建参数时省略该值,在这种情况下,它在构建时的值是 Compose 运行环境中的值。

args:
  - buildno
  - gitcommithash

使用布尔值时的提示

YAML 布尔值 ( "true""false""yes""no""on""off") 必须用引号括起来,以便解析器将它们解释为字符串。