@@ -65,32 +65,32 @@ To apply the metadata together with a user's devcontainer.json at runtime, the f
6565
6666| Property | Type/Format | Merge Logic | devcontainer.json | devcontainer-feature.json |
6767| -------- | ----------- | ----------- | :---------------: | :--------------: |
68- | ` id ` | E.g., ` ghcr.io/devcontainers/features/node:1 ` | Not merged. | | x |
69- | ` init ` | ` boolean ` | ` true ` if at least one is ` true ` , ` false ` otherwise. | x | x |
70- | ` privileged ` | ` boolean ` | ` true ` if at least one is ` true ` , ` false ` otherwise. | x | x |
71- | ` capAdd ` | ` string[] ` | Union of all ` capAdd ` arrays without duplicates. | x | x |
72- | ` securityOpt ` | ` string[] ` | Union of all ` securityOpt ` arrays without duplicates. | x | x |
73- | ` entrypoint ` | ` string ` | Collected list of all entrypoints. | | x |
74- | ` mounts ` | ` (string \| { type, src, dst })[] ` | Collected list of all mountpoints. Conflicts: Last source wins. | x | x |
75- | ` onCreateCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all onCreateCommands. | x | x |
76- | ` updateContentCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all updateContentCommands. | x | x |
77- | ` postCreateCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all postCreateCommands. | x | x |
78- | ` postStartCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all postStartCommands. | x | x |
79- | ` postAttachCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all postAttachCommands. | x | x |
80- | ` waitFor ` | enum | Last value wins. | x | |
81- | ` customizations ` | Object of tool-specific customizations. | Merging is left to the tools. | x | x |
82- | ` containerUser ` | ` string ` | Last value wins. | x | |
83- | ` remoteUser ` | ` string ` | Last value wins. | x | |
84- | ` userEnvProbe ` | ` string ` (enum) | Last value wins. | x | |
85- | ` remoteEnv ` | Object of strings. | Per variable, last value wins. | x | |
86- | ` containerEnv ` | Object of strings. | Per variable, last value wins. | x | |
87- | ` overrideCommand ` | ` boolean ` | Last value wins. | x | |
88- | ` portsAttributes ` | Map of ports to attributes. | Per port (not per port attribute), last value wins. | x | |
89- | ` otherPortsAttributes ` | Port attributes. | Last value wins (not per port attribute). | x | |
90- | ` forwardPorts ` | ` (number \| string)[] ` | Union of all ports without duplicates. Last one wins (when mapping changes). | x | |
91- | ` shutdownAction ` | ` string ` (enum) | Last value wins. | x | |
92- | ` updateRemoteUserUID ` | ` boolean ` | Last value wins. | x | |
93- | ` hostRequirements ` | ` cpus ` , ` memory ` , ` storage ` , ` gpu ` | Max value wins. | x | |
68+ | ` id ` | E.g., ` ghcr.io/devcontainers/features/node:1 ` | Not merged. | | ✓ |
69+ | ` init ` | ` boolean ` | ` true ` if at least one is ` true ` , ` false ` otherwise. | ✓ | ✓ |
70+ | ` privileged ` | ` boolean ` | ` true ` if at least one is ` true ` , ` false ` otherwise. | ✓ | ✓ |
71+ | ` capAdd ` | ` string[] ` | Union of all ` capAdd ` arrays without duplicates. | ✓ | ✓ |
72+ | ` securityOpt ` | ` string[] ` | Union of all ` securityOpt ` arrays without duplicates. | ✓ | ✓ |
73+ | ` entrypoint ` | ` string ` | Collected list of all entrypoints. | | ✓ |
74+ | ` mounts ` | ` (string \| { type, src, dst })[] ` | Collected list of all mountpoints. Conflicts: Last source wins. | ✓ | ✓ |
75+ | ` onCreateCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all onCreateCommands. | ✓ | ✓ |
76+ | ` updateContentCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all updateContentCommands. | ✓ | ✓ |
77+ | ` postCreateCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all postCreateCommands. | ✓ | ✓ |
78+ | ` postStartCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all postStartCommands. | ✓ | ✓ |
79+ | ` postAttachCommand ` | ` string \| string[] \| {[key: string]: string \| string[]} ` | Collected list of all postAttachCommands. | ✓ | ✓ |
80+ | ` waitFor ` | enum | Last value wins. | ✓ | |
81+ | ` customizations ` | Object of tool-specific customizations. | Merging is left to the tools. | ✓ | ✓ |
82+ | ` containerUser ` | ` string ` | Last value wins. | ✓ | |
83+ | ` remoteUser ` | ` string ` | Last value wins. | ✓ | |
84+ | ` userEnvProbe ` | ` string ` (enum) | Last value wins. | ✓ | |
85+ | ` remoteEnv ` | Object of strings. | Per variable, last value wins. | ✓ | |
86+ | ` containerEnv ` | Object of strings. | Per variable, last value wins. | ✓ | |
87+ | ` overrideCommand ` | ` boolean ` | Last value wins. | ✓ | |
88+ | ` portsAttributes ` | Map of ports to attributes. | Per port (not per port attribute), last value wins. | ✓ | |
89+ | ` otherPortsAttributes ` | Port attributes. | Last value wins (not per port attribute). | ✓ | |
90+ | ` forwardPorts ` | ` (number \| string)[] ` | Union of all ports without duplicates. Last one wins (when mapping changes). | ✓ | |
91+ | ` shutdownAction ` | ` string ` (enum) | Last value wins. | ✓ | |
92+ | ` updateRemoteUserUID ` | ` boolean ` | Last value wins. | ✓ | |
93+ | ` hostRequirements ` | ` cpus ` , ` memory ` , ` storage ` , ` gpu ` | Max value wins. | ✓ | |
9494{: .table .table-bordered .table-responsive}
9595
9696Variables in string values will be substituted at the time the value is applied. When the order matters, the devcontainer.json is considered last.
0 commit comments