Skip to content

Commit fa7e8cf

Browse files
authored
docs: update README subset section for 0.3.0 (#76)
Rewrites the README's Supported compose subset section, stale since before the 0.3.0 arc: leads with the measured parity property (refuses every document docker compose config refuses, verified by the differential harness) and reflects the actual 0.3.0 breadth (long-form volumes/--mount + nested options, env_file long-form, resources/deploy, pod-wide dns/sysctls/extra_hosts, confinement/metadata, quoted booleans, extends/secrets/configs/profiles).
1 parent b80f0b6 commit fa7e8cf

1 file changed

Lines changed: 29 additions & 9 deletions

File tree

README.md

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,35 @@ sh ./run.sh
5757

5858
## Supported compose subset
5959

60-
compose2pod supports an honest subset and errors clearly on anything outside
61-
it: `image`/`build`, `command`, `environment`/`env_file`, short-form bind
62-
`volumes`, `healthcheck` (CMD/CMD-SHELL), `depends_on` (all conditions), and
63-
network `aliases`. Compose extension fields (any `x-`-prefixed key) and YAML
64-
anchors are accepted as-is, so a top-level `x-*` anchor block for shared
65-
config just works. `${VAR}`-style variable interpolation is left live in the
66-
generated script, resolved by its shell against the environment present
67-
when the script runs (no `.env` file support). See
68-
`architecture/supported-subset.md` for the full accept/ignore/reject matrix.
60+
compose2pod refuses **every document `docker compose config` refuses** — a
61+
measured property, checked continuously by a differential conformance harness
62+
that runs the real Docker CLI and the real compose2pod pipeline over the same
63+
YAML. So a file that compiles is a file Docker would run; where compose2pod
64+
still refuses a form Docker accepts, it is because Podman genuinely cannot
65+
express it (each such case is documented, not guessed).
66+
67+
Within that boundary it covers most of what real compose files use:
68+
69+
- **Services**`image`/`build`, `command`/`entrypoint`, `environment` and
70+
`env_file` (string and long-form `{path, required, format}`), `volumes`
71+
(short-form and long-form `--mount`, including the `bind`/`volume`/`tmpfs`
72+
option maps), `tmpfs`, `healthcheck`, `depends_on` (all conditions), network
73+
`aliases`, `hostname`/`container_name`.
74+
- **Confinement & metadata**`user`, `working_dir`, `read_only`, `init`,
75+
`privileged`, `cap_add`/`cap_drop`, `security_opt`, `devices`, `group_add`,
76+
`platform`, `labels`, `annotations`, `pull_policy` (the quoted-boolean and
77+
YAML-1.1 spellings Docker accepts, too).
78+
- **Resources** — the legacy keys (`mem_limit`, `cpus`, `pids_limit`,
79+
`ulimits`, …) and the modern `deploy.resources` block.
80+
- **Pod-wide**`dns`/`dns_search`/`dns_opt`, `sysctls`, `extra_hosts`.
81+
- **Composition** — same-file `extends`, `secrets`/`configs`, `profiles`.
82+
83+
Compose extension fields (any `x-`-prefixed key) and YAML anchors are accepted
84+
as-is, so a top-level `x-*` anchor block for shared config just works.
85+
`${VAR}`-style variable interpolation is left live in the generated script,
86+
resolved by its shell against the environment present when the script runs (no
87+
`.env` file support). See `architecture/supported-subset.md` for the full
88+
accept/ignore/reject matrix and `planning/decisions/` for the boundary rulings.
6989

7090
## Status
7191

0 commit comments

Comments
 (0)