Compose 开发规范

注意

开发是 Compose 规范的可选部分。它在 Docker Compose 版本 2.22.0 及更高版本中可用。

此页面定义了 Compose 如何有效地帮助您,并定义了 Compose 设置的开发约束和工作流程。Compose 文件中只有一小部分服务可能需要 develop 子部分。

示例

services:
  frontend:
    image: example/webapp
    build: ./webapp
    develop:
      watch: 
        # sync static content
        - path: ./webapp/html
          action: sync
          target: /var/www
          ignore:
            - node_modules/

  backend:
    image: example/backend
    build: ./backend
    develop:
      watch: 
        # rebuild image and recreate service
        - path: ./backend/src
          action: rebuild

属性

develop 子部分定义了 Compose 用于帮助您在开发服务时优化工作流程的配置选项。

watch

watch 属性定义了一组规则,这些规则控制基于本地文件更改的自动服务更新。watch 是一个序列,序列中的每个单独项目都定义了 Compose 用于监视源代码更改的规则。有关更多信息,请参阅 使用 Compose Watch.

action

action 定义在检测到更改时要采取的操作。如果将 action 设置为

  • rebuild,Compose 将根据 build 部分重建服务映像,并使用更新后的映像重新创建服务。
  • sync,Compose 会保持现有服务容器运行,但会根据 target 属性将源文件与容器内容同步。
  • sync+restart 命令会在 Compose 将源文件与容器内容根据 target 属性同步后,重启容器。

sync+restart 属性在 Docker Compose 2.23.0 及更高版本中可用。

忽略

ignore 属性用于定义要忽略的路径模式列表。任何匹配模式的更新文件,或属于匹配模式的文件夹,都不会触发服务的重新创建。语法与 .dockerignore 文件相同。

  • * 匹配文件名中的 0 个或多个字符。
  • ? 匹配文件名中的单个字符。
  • */* 匹配两个具有任意名称的嵌套文件夹。
  • ** 匹配任意数量的嵌套文件夹。

如果构建上下文包含 .dockerignore 文件,则该文件中的模式将作为 ignores 文件的隐式内容加载,并在 Compose 模型中设置的值将被附加。

路径

path 属性定义要监视更改的源代码路径(相对于项目目录)。路径内部任何不匹配任何 ignore 规则的更新文件都会触发配置的操作。

目标

target 属性仅在 action 配置为 sync 时适用。path 中的更新文件将与容器文件系统同步,以确保容器始终运行最新的内容。