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
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 reload
ignore
ignore
属性可用于定义要忽略的路径模式列表。任何匹配模式或属于匹配模式文件夹的更新文件都不会触发服务重新创建。语法与 .dockerignore
文件相同
*
匹配文件名中的 0 个或多个字符。?
匹配文件名中的单个字符。*/*
匹配两个任意名称的嵌套文件夹**
匹配任意数量的嵌套文件夹
如果构建上下文包含 .dockerignore
文件,则此文件中的模式将作为 ignores
文件的隐式内容加载,并附加 Compose 模型中设置的值。
include
有时,选择要监视的文件比使用 ignore
声明不应监视的文件更容易。
include
属性可用于定义要考虑监视的路径模式或模式列表。只有与这些模式匹配的文件才会在应用监视规则时被考虑。语法与 ignore
相同。
services:
backend:
image: example/backend
develop:
watch:
# rebuild image and recreate service
- path: ./src
include: *.go
action: rebuild
path
path
属性定义要监视更改的源代码路径(相对于项目目录)。路径中任何不匹配任何 ignore
规则的文件更新都会触发配置的操作。
target
target
属性仅在 action
配置为 sync
时适用。path
中有更改的文件会与容器的文件系统同步,以便容器始终运行最新内容。