container-run 0.3.4

An opinionated wrapper for running commands in containers
container-run-0.3.4 is not a library.

container-run

An opinionated wrapper for running commands in containers. container-run automates the mechanics of associating directories with container images and working directories to run commands within those containers.

How to use container-run

Install

Install from crates.io using cargo.

  1. cargo install container-run

Create a configuration file

Create a file in one of three locations:

  • ./.container-run.conf
  • ~/.container-run.conf
  • ~/.config/container-run/container-run.conf
{
    "basenames": {
        "myproject": {"profile": "golang-github"}
    },
    "profiles": {
        "golang-github": {
            "image": "docker.io/library/golang:1.16",
            "mountpoint": "/go/src/github.com/{basename}"
        }
    }
}

See the container-run.conf documentation for more detailed information.

Invoke container-run

Most frequently, container-run is used to execute software development oriented commands within the scope of a container that has been constructed to provide all the necessary build tools.

Change directory to the path you would like to execute commands within a container, and execute the commands by prefixing them with container-run (eg $ container-run make test build).

Example usage

With a working directory of /home/me/myproject, and the configuration file from the configuration file section, running the command container-run make test will do the following:

  • determine the container engine to use (podman or docker)
  • start running a container that:
    • uses the image docker.io/library/golang:1.16
    • mounts the host directory /home/me/myproject/ into the container as /go/src/github.com/myproject
    • sets the working directory in the container to /go/src/github.com/myproject
    • executes the command make test
  • passes execution to the container engine process, this will return all output and status to the shell from which it ran