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` 是一个序列,序列中的每个单独项目都定义了 Compose 用于监视源代码更改的规则。更多信息,请参见 使用 Compose 监控

操作

`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` 内发生更改的文件将与容器文件系统同步,以便后者始终使用最新的内容运行。