devcontainers / devcontainers/cli

Feature request: `@devcontainers/cli` as a docker CLI plugin

Aperta
#827 0 commenti 2 reazioni 0 assegnatari Vedi su GitHub
feature-request
Lingua principale
TypeScript
Stelle
3k
Fork
457
Merge medio
13h 17m
PR unite (30g)
6

Descrizione

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`](https://github.com/docker/compose), [`docker buildx`](https://github.com/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 have `docker buildx build` and `docker compose build`.
* The docker CLI has `docker run`, and compose has `docker compose run`.
* etc.

For example, in the absence of `devcontainer run `, we find ourselves writing scripts to wrap `@devcontainers/cli` and mimic the behavior:
```shell
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 "${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!

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.