Compose 开发规范

注意:

Develop 是 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 Watch

操作

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 属性仅当 actionsync 配置时才适用。path 中发生更改的文件会与容器文件系统同步,以便后者始终运行最新的内容。