Open
Description
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:
- Package standalone binaries via @vercel/pkg #343
- Packaging and distribution of devcontainer as standalone executable #614
- RFC: Build as single executable application #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 build
anddocker 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!