Feature request: `@devcontainers/cli` as a docker CLI plugin
We've found it difficult to on-board users accustomed to the docker CLI to @devcontainers/cli.
It would be awesome if @devcontainers/cli were a docker CLI front-end plugin, similar to docker compose, docker buildx, etc.
Partially the motivation is similar to existing issues/PRs -- having a way to use the CLI without node would be great:
- https://github.com/devcontainers/cli/pull/343
- https://github.com/devcontainers/cli/issues/614
- https://github.com/devcontainers/cli/pull/618
This would also hopefully provide incentive to better align with docker CLI idioms. For example:
- The docker CLI has
docker build, and Buildx/compose havedocker buildx buildanddocker compose build. - The docker CLI has
docker run, and compose hasdocker compose run. - etc.
For example, in the absence of devcontainer run <args>, we find ourselves writing scripts to wrap @devcontainers/cli and mimic the behavior:
local container_id rm up_args exec_args;
_parse_args_somehow rm up_args exec_args;
on_exit() {
local code=$?;
if test -n "${rm-}" && test -n "${container_id-}"; then
docker rm -f "${container_id}" >/dev/null 2>&1 || true;
container_id="";
fi
exit "${code}";
}
trap on_exit EXIT;
container_id="$(devcontainer up ${rm:+--remove-existing-container} "${up_args[@]}" | jq -r '.containerId')";
devcontainer exec --workspace-folder . --config <path> "${exec_args[@]}";
It would be really neat to type docker devcontainer build . or docker devcontainer run --rm -it ..., especially if the @devcontainers/cli plugin also shipped shell completions!