|
| 1 | +# Support for Dev Container Specification |
| 2 | + |
| 3 | +> Refer to the full Dev Container specification [here](https://containers.dev/implementors/json_reference/) for more information on the below options. |
| 4 | +
|
| 5 | +The symbols in the first column indicate the support status: |
| 6 | + |
| 7 | +- 🟢 Fully supported. |
| 8 | +- 🟠 Partially supported. |
| 9 | +- 🔴 Not currently supported. |
| 10 | + |
| 11 | +The last column indicates any currently existing GitHub issue for tracking support for this feature. |
| 12 | +Feel free to [create a new issue](https://github.com/coder/envbuilder/issues/new) if you'd like Envbuilder to support a particular feature. |
| 13 | + |
| 14 | +| Status | Name | Description | Known Issues | |
| 15 | +| ----------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | |
| 16 | +| **General** | | | |
| 17 | +| 🔴 | `name` | Human-friendly name for the dev container. | - | |
| 18 | +| 🔴 | `forwardPorts` | Port forwarding allows exposing container ports to the host, making services accessible. | [#48](https://github.com/coder/envbuilder/issues/48) | |
| 19 | +| 🔴 | `portsAttributes` | Set port attributes for a `host:port`. | - | |
| 20 | +| 🔴 | `otherPortsAttributes` | Other options for ports not configured using `portsAttributes`. | - | |
| 21 | +| 🟢 | `containerEnv` | Environment variables to set inside the container. | - | |
| 22 | +| 🟢 | `remoteEnv` | Override environment variables for specific supporting services or tools, but not the container as a whole. | - | |
| 23 | +| 🟢 | `remoteUser` | Override the user that supporting tools run as inside the container without changing the user for the whole container. | - | |
| 24 | +| 🟢 | `containerUser` | Override the user for all operations run inside the container. | - | |
| 25 | +| 🔴 | `updateRemoteUserUID` | Update the devcontainer UID/GID to match the local user. | - | |
| 26 | +| 🔴 | `userEnvProbe` | Shell to use when probing for user environment variables. | - | |
| 27 | +| 🔴 | `overrideCommand` | Override the default sleep command to be run by supporting services. | - | |
| 28 | +| 🔴 | `shutdownAction` | Action to take when supporting tools are closed or shut down. | - | |
| 29 | +| 🔴 | `init` | Adds a tiny init process to the container. | [#221](https://github.com/coder/envbuilder/issues/221) | |
| 30 | +| 🔴 | `privileged` | Whether the container should be run in privileged mode. | - | |
| 31 | +| 🔴 | `capAdd` | Capabilities to add to the container (for example, `SYS_PTRACE`). | - | |
| 32 | +| 🔴 | `securityOpt` | Security options to add to the container (for example, `seccomp=unconfined`). | - | |
| 33 | +| 🔴 | `mounts` | Add additional mounts to the container. | [#220](https://github.com/coder/envbuilder/issues/220) | |
| 34 | +| 🟢 | `features` | Features to be added to the devcontainer. | - | |
| 35 | +| 🔴 | `overrideFeatureInstallOrder` | Override the order in which features should be installed. | [#226](https://github.com/coder/envbuilder/issues/226) | |
| 36 | +| 🔴 | `customizations` | Product-specific properties, e.g., _VS Code_ settings and extensions. | [#43](https://github.com/coder/envbuilder/issues/43) | |
| 37 | +| **Image/Dockerfile** | | | |
| 38 | +| 🟢 | `image` | Name of an image to run. | - | |
| 39 | +| 🟢 | `build.dockerfile` | Path to a Dockerfile to build relative to `devcontainer.json`. | - | |
| 40 | +| 🟢 | `build.context` | Path to the build context relative to `devcontainer.json`. | - | |
| 41 | +| 🟢 | `build.args` | Build args to use when building the Dockerfile. | - | |
| 42 | +| 🔴 | `build.options` | Build options to pass to the Docker daemon. Envbuilder does not use a Docker daemon, so this is not relevant. | - | |
| 43 | +| 🟢 | `build.target` | Target to be passed when building the Dockerfile. | - | |
| 44 | +| 🟢 | `build.cacheFrom` | Images to use as caches when building the Dockerfile. | - | |
| 45 | +| 🔴 | `appPort` | Ports to be published locally when the container is running. | - | |
| 46 | +| 🔴 | `workspaceMount` | Overrides the default local mount point for the workspace when the container is created. | - | |
| 47 | +| 🔴 | `workspaceFolder` | Default path to open when connecting to the container. | - | |
| 48 | +| **Docker Compose** | | | |
| 49 | +| 🔴 | `dockerComposeFile` | Path to a Docker Compose file related to the `devcontainer.json`. | [#236](https://github.com/coder/envbuilder/issues/236) | |
| 50 | +| 🔴 | `service` | Name of the Docker Compose service to which supporting tools should connect. | [#236](https://github.com/coder/envbuilder/issues/236) | |
| 51 | +| 🔴 | `runServices` | Docker Compose services to automatically start. | [#236](https://github.com/coder/envbuilder/issues/236) | |
| 52 | +| **Lifecycle scripts** | | | |
| 53 | +| 🔴 | `initializeCommand` | Command to run on the host machine when creating the container. | [#395](https://github.com/coder/envbuilder/issues/395) | |
| 54 | +| 🟢 | `onCreateCommand` | Command to run inside container after first start. | | |
| 55 | +| 🟢 | `updateContentCommand` | Command to run after `onCreateCommand` inside container. | | |
| 56 | +| 🟢 | `postCreateCommand` | Command to run after `updateContentCommand` inside container. | | |
| 57 | +| 🟢 | `postStartCommand` | Command to run each time the container is started. | | |
| 58 | +| 🔴 | `postAttachCommand` | Command to run each time a tool attaches to the container. | | |
| 59 | +| 🔴 | `waitFor` | Specify the lifecycle command tools should wait to complete before connecting. | | |
| 60 | +| **Minimum Host Requirements** | | | |
| 61 | +| 🔴 | `hostRequirements.cpus` | Minimum number of CPUs required. | - | |
| 62 | +| 🔴 | `hostRequirements.memory` | Minimum memory requirements. | - | |
| 63 | +| 🔴 | `hostRequirements.storage` | Minimum storage requirements. | - | |
| 64 | +| 🔴 | `hostRequirements.gpu` | Whether a GPU is required. | - | |
| 65 | +| **Variable Substitution** | | | |
| 66 | +| 🟢 | `${localEnv:VARIABLE_NAME}` | Environment variable on the host machine. | - | |
| 67 | +| 🟢 | `${containerEnv:VARIABLE_NAME}` | Existing environment variable inside the container. | - | |
| 68 | +| 🟢 | `${localWorkspaceFolder}` | Path to the local workspace folder. | - | |
| 69 | +| 🟢 | `${containerWorkspaceFolder}` | Path to the workspace folder inside the container. | - | |
| 70 | +| 🟢 | `${localWorkspaceFolderBasename}` | Base name of `localWorkspaceFolder`. | - | |
| 71 | +| 🟢 | `${containerWorkspaceFolderBasename}` | Base name of `containerWorkspaceFolder`. | - | |
| 72 | +| 🔴 | `${devcontainerId}` | A stable unique identifier for the devcontainer. | - | |
0 commit comments