@@ -755,7 +755,26 @@ boolean-typed exception in this group, validated as an actual bool like
755755
756756## Volumes
757757
758- Short syntax only; the long mapping form raises. The ` volumes ` key itself
758+ A ` volumes ` entry may be the short string syntax or the long-form mapping
759+ ` {type, source, target, read_only, consistency} ` . ` type ` must be ` bind ` ,
760+ ` volume ` , or ` tmpfs ` ; ` cluster ` , ` npipe ` , and ` image ` are refused (the latter
761+ is podman-inexpressible, and ` cluster ` /` npipe ` fall out as an unrecognized
762+ ` type ` alongside them). Each is emitted as a single ` --mount ` flag
763+ (` compose2pod/emit.py ` 's ` _mount_flag ` ) rather than ` -v ` : ` type=<type> ` ,
764+ ` source=<source> ` (a relative bind ` source ` is resolved against
765+ ` --project-dir ` , the same as the short form), ` target=<target> ` , and a
766+ trailing ` ro ` when ` read_only ` is truthy — ` read_only ` accepts the quoted
767+ ` "true" ` /` "false" ` form via the same ` is_bool_like ` check every other
768+ boolean field uses. ` consistency ` is accepted and validated as a string but
769+ otherwise ignored — podman's ` --mount ` has no consistency knob. The nested
770+ ` bind: ` /` volume: ` /` tmpfs: ` option maps (` propagation ` , ` subpath ` ,
771+ ` tmpfs.size ` /` tmpfs.mode ` , etc.) fall out as unsupported keys and raise;
772+ ` nocopy ` is podman-inexpressible regardless. A long-form ` volume ` -type entry
773+ whose ` source ` is a bare identifier is cross-checked against the top-level
774+ ` volumes: ` block exactly like a short-form named volume (below) — a
775+ ` bind ` /` tmpfs ` entry's ` source ` , or an absent one, needs no declaration.
776+
777+ The ` volumes ` key itself
759778must be a list — a bare string raises, rather than being destructured one
760779character at a time. A ` source:target ` entry is one of two kinds, told apart
761780by whether ` source ` matches Docker's own volume-name grammar
0 commit comments