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 属性定义了一系列规则,这些规则控制基于本地文件更改的自动服务更新。watch 是一个序列,序列中的每个单独项定义了由 Compose 应用于监控源代码更改的规则。有关更多信息,请参阅
使用 Compose Watch。
action
action 定义了检测到更改时要采取的操作。如果 action 设置为:
rebuild,Compose 根据build部分重新构建服务镜像,并使用更新后的镜像重新创建服务。restart,Compose 会重新启动服务容器。适用于 Docker Compose 版本 2.32.0 及更高版本。sync,Compose 保持现有的服务容器运行,但根据target属性将源文件与容器内容同步。sync+restart,Compose 根据target属性将源文件与容器内容同步,然后重新启动容器。适用于 Docker Compose 2.23.0 及更高版本。sync+exec,Compose 根据target属性将源文件与容器内容同步,然后在容器内执行命令。适用于 Docker Compose 2.32.0 及更高版本。
exec
Introduced in Docker Compose version
2.23.2
exec 仅在 action 设置为 sync+exec 时相关。与
服务钩子 类似,exec 用于定义容器启动后要在其中运行的命令。
command: 指定容器启动后要运行的命令。此属性是必需的,您可以选择使用shell形式或exec形式。user: 运行命令的用户。如果未设置,则命令将以与主服务命令相同的用户身份运行。privileged: 允许命令以特权访问运行。working_dir: 运行命令的工作目录。如果未设置,则在与主服务命令相同的工作目录中运行。environment: 设置运行命令的环境变量。虽然命令继承了为服务的主命令定义的环境变量,但此部分允许您添加新变量或覆盖现有变量。
services:
frontend:
image: ...
develop:
watch:
# sync content then run command to reload service without interruption
- path: ./etc/config
action: sync+exec
target: /etc/config/
exec:
command: app reloadignore
ignore 属性可用于定义要忽略的路径模式列表。任何匹配模式的文件,或属于匹配模式的文件夹的更新文件,都不会触发服务的重新创建。语法与 .dockerignore 文件相同:
*匹配文件名中的0个或多个字符。?匹配文件名中的单个字符。*/*匹配任意名称的两个嵌套文件夹**匹配任意数量的嵌套文件夹
如果构建上下文包含一个.dockerignore文件,该文件中的模式将作为隐式内容加载到ignores文件中,并且在Compose模型中设置的值将被追加。
path
path 属性定义了要监视更改的源代码路径(相对于项目目录)。对路径内任何文件的更新,如果不匹配任何 ignore 规则,将触发配置的操作。
目标
target 属性仅在 action 配置为 sync 时适用。path 内有更改的文件会与容器文件系统同步,以便后者始终运行最新的内容。