devbox

command module
v0.0.0-...-b7fc2af Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 12, 2021 License: MIT Imports: 1 Imported by: 0

README

Devbox

Interactively running and debugging in containers can be hell. For such an environment, a development box running inside the container is useful.

This devbox CLI manages use of terminal-based development environment devboxes. A devbox is defined in terms of:

  • name of the devbox image to run in a container or pod
  • name of the devbox user to login as
  • name or path of the devbox shell to run in the container or pod
  • name of container or pod running the devbox image
  • namespace of Kubernetes cluster to run devbox pods (optional, Kubernetes only
  • kubeconfig of Kubernetes cluster to run devbox pods (optional, Kubernetes only)
  • description of devbox usage

Note that a devbox is intended to be a "pet" not "cattle", more persistent than ephemeral. Any files copied to the devbox will be lost once stopped.

This application provides the following functionality:

  • managing devboxes with the list, context, add and remove commands
  • operating devboxes with the start, stop, setup and shell commands
  • providing version and other build metadata with the version command

This application persists its state in a state file, which by default is ~/.devbox.state.yaml.

This state includes:

  • the current active devbox context by its ID
  • the devboxes that have been added
  • the file path to the state file

Application state may be queried for the current active context.

devbox context

It can also be set if provided an ID of a managed devbox.

devbox context demo-box

Application state may be queried for a list of the managed boxes as well.

devbox list

Installation

This application is easily installed with go.

go install github.com/mojochao/devbox@latest

Usage

To get details on usage run devbox with no commands, or the -h or --help flags.

Application state must be initialized once before use.

devbox init

After initialization, the list of managed devboxes can be displayed.

devbox list

Initially, this will be empty. After adding devboxes, this will not be empty and details of added devboxes will be displayed.

After initialization, a typical startup and provisioning workflow looks like the following.

devbox add
devbox start
devbox setup

Note that the devbox setup command does not have to be run if you'd rather have complete control. You can copy local files to the devbox with 'docker cp' and 'kubectl cp' as desired if you wish.

Once started and configuration, the devbox is used interactively in shells running in the devbox container or pod until no longer needed.

devbox shell

Once the started devbox is no longer needed, it should be stopped.

devbox stop

Stopping a devbox removes all files copied to it. If the devbox is restarted, it will be necessary to recopy any files needed to the devbox.

Once the stopped devbox is no longer needed and likely never to be needed again, it may be removed from devbox management.

devbox remove

Once removed, devboxes will not show up in the output of the devbox list command and cannot be started. If needed again, re-add the devbox with the devbox add command and provision it again for use as desired.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package cmd contains the Cobra commands making up the devbox CLI.
Package cmd contains the Cobra commands making up the devbox CLI.
internal
build
Package build provides build identity set at compile time by govvv.
Package build provides build identity set at compile time by govvv.
config
Package config contains global config state used by other packages.
Package config contains global config state used by other packages.
devbox
Package devbox provides state management functionality to the Cobra CLI cmds.
Package devbox provides state management functionality to the Cobra CLI cmds.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL