|
| 1 | +# compose2pod 0.1.5 — named volumes |
| 2 | + |
| 3 | +A patch release accepting Compose named volumes, previously a hard error. |
| 4 | +Compose files that declare a top-level `volumes:` block or reference a named |
| 5 | +volume in a service (e.g. `pgdata:/var/lib/postgresql/data` for database data |
| 6 | +persistence) now convert without editing the compose file. |
| 7 | + |
| 8 | +## Fix |
| 9 | + |
| 10 | +- **Named volumes are accepted.** A service volume whose source is a bare |
| 11 | + identifier rather than a host path (a Compose named volume) is emitted |
| 12 | + verbatim as `-v <name>:<target>`. Podman creates the volume implicitly on |
| 13 | + first reference — the same behavior as plain `podman run -v` — so no |
| 14 | + explicit `podman volume create` step is needed. The volume persists on the |
| 15 | + host after the pod is removed, identical to `docker compose down` without |
| 16 | + `-v`. |
| 17 | +- **Top-level `volumes:` is accepted (ignored).** Mirrors the existing |
| 18 | + top-level `networks` treatment: the block's `driver`/`driver_opts` and |
| 19 | + `external` settings are never read, since implicit creation with default |
| 20 | + options is what podman does regardless. A non-default driver or an |
| 21 | + `external: true` volume that should pre-exist has no special handling. |
| 22 | + |
| 23 | +## Downstream |
| 24 | + |
| 25 | +No action needed — additive and backward compatible. Documents that previously |
| 26 | +failed with `unsupported top-level keys: ['volumes']` or "named volume ... is |
| 27 | +not supported" now emit a pod script; nothing that converted before changes. |
| 28 | + |
| 29 | +## Internals |
| 30 | + |
| 31 | +- `architecture/supported-subset.md` documents the bind-mount vs named-volume |
| 32 | + disambiguation (source starts with `.`/`/` vs bare identifier) and the |
| 33 | + default-driver-only limitation. |
| 34 | +- 95 tests at 100% line coverage (enforced); `ruff select=ALL`, `ty`, and |
| 35 | + `eof-fixer` clean. |
0 commit comments