docs/content/reference/compose-file/develop.md

87 lines
3.3 KiB
Markdown

---
title: Compose Develop Specification
description: Learn about the Compose Develop Specification
keywords: compose, compose specification, compose file reference, compose develop specification
aliases:
- /compose/compose-file/develop/
weight: 150
---
> **Note:**
>
> Develop is an optional part of the Compose Specification. It is available with Docker Compose version 2.22.0 and later.
{{< include "compose/develop.md" >}}
This page defines how Compose behaves to efficiently assist you and defines the development constraints and workflows set by Compose. Only a subset of
Compose file services may require a `develop` subsection.
## Illustrative example
```yaml
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
```
## Attributes
The `develop` subsection defines configuration options that are applied by Compose to assist you during development of a service with optimized workflows.
### watch
The `watch` attribute defines a list of rules that control automatic service updates based on local file changes. `watch` is a sequence, each individual item in the sequence defines a rule to be applied by
Compose to monitor source code for changes. For more information, see [Use Compose Watch](/manuals/compose/file-watch.md).
#### action
`action` defines the action to take when changes are detected. If `action` is set to:
- `rebuild`, Compose rebuilds the service image based on the `build` section and recreates the service with the updated image.
- `sync`, Compose keeps the existing service container(s) running, but synchronizes source files with container content according to the `target` attribute.
- `sync+restart`, Compose synchronizes source files with container content according to the `target` attribute, and then restarts the container.
> `sync+restart` attribute is available with Docker Compose version 2.23.0 and later.
#### ignore
The `ignore` attribute can be used to define a list of patterns for paths to be ignored. Any updated file
that matches a pattern, or belongs to a folder that matches a pattern, won't trigger services to be re-created.
The syntax is the same as `.dockerignore` file:
- `*` matches 0 or more characters in a file name.
- `?` matches a single character in file name.
- `*/*` matches two nested folders with arbitrary names
- `**` matches an arbitrary number of nested folders
If the build context includes a `.dockerignore` file, the patterns in this file is loaded as implicit content
for the `ignores` file, and values set in the Compose model are appended.
#### path
`path` attribute defines the path to source code (relative to the project directory) to monitor for changes. Updates to any file
inside the path, which doesn't match any `ignore` rule, triggers the configured action.
#### target
`target` attribute only applies when `action` is configured for `sync`. Files within `path` with changes are synchronized
with container filesystem, so that the latter is always running with up-to-date content.