Skip to content

Commit 930ee2b

Browse files
committed
chore(docs): add explicit documention for parts of devcontainer spec supported by envbuilder
1 parent b18cd0e commit 930ee2b

File tree

2 files changed

+74
-10
lines changed

2 files changed

+74
-10
lines changed

README.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,11 @@ docker run -it --rm
8282

8383
You can see all the supported environment variables in [this document](./docs/env-variables.md).
8484

85-
## Unsupported Features
86-
8785
### Development Containers
8886

89-
The table below keeps track of features we plan to implement. Feel free to [create a new issue](https://github.com/coder/envbuilder/issues/new) if you'd like Envbuilder to support a particular feature.
87+
[This document](./docs/supported-features.md) keeps track of what parts of the Dev Container specification Envbuilder currently supports.
9088

91-
| Name | Description | Known Issues |
92-
| ------------------------ | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
93-
| Volume mounts | Volumes are used to persist data and share directories between the host and container. | [#220](https://github.com/coder/envbuilder/issues/220) |
94-
| Port forwarding | Port forwarding allows exposing container ports to the host, making services accessible. | [#48](https://github.com/coder/envbuilder/issues/48) |
95-
| Script init & Entrypoint | `init` adds a tiny init process to the container, and `entrypoint` sets a script to run at container startup. | [#221](https://github.com/coder/envbuilder/issues/221) |
96-
| Customizations | Product-specific properties, e.g., _VS Code_ settings and extensions. | [#43](https://github.com/coder/envbuilder/issues/43) |
97-
| Composefile | Define multiple containers and services for more complex development environments. | [#236](https://github.com/coder/envbuilder/issues/236) |
89+
Feel free to [create a new issue](https://github.com/coder/envbuilder/issues/new) if you'd like Envbuilder to support a particular feature.
9890

9991
### Devfile
10092

docs/devcontainer-spec-support.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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

Comments
 (0)