Docker Interface (rever.docker)

Dockers tools for rever.

class rever.docker.InContainer(image=None, lang='xonsh', args=('-c'), env=True, mounts=(), **kwargs)

Macro context manager for running code within a container. This runs a command of the following form within the container:

lang args block

For example:

xonsh -c "echo Wow Mom!\n"

This allows you to run your own code within a container without having to worry about polluting the local namespace.

Parameters
imagestr or None, optional

Name of the image to run, defaults to $DOCKER_INSTALL_IMAGE. Environment variables will be expanded.

langstr, optional

Language to execute the body in, default xonsh. This may also be a full path to an executable.

argssequence of str, optional

Extra arguments to pass in after the executable but before the main body. Defaults to the standard compile flag '-c'.

envbool or dict, optional

Environment to use. This has the same meaning as in run_in_container(). Please see that function for more details, default True.

mountslist of dict, optional

Locations to mount in the running container. This has the same meaning as ing run_in_container(). Please see that function for more details, default does not mount anything.

kwargsdict, optional

All other keyword arguments are passed into ensure_images() when the context is entered.

rever.docker.apt_deps(apt=None)

Constructs apt-based install command

rever.docker.build_image(dockerfile, image, maker, **kwargs)

Builds a docker image.

rever.docker.collate_deps(apt=None, conda=None, conda_channels=None, pip=None, pip_requirements=None)

Constructs a string that installs all known dependencies.

rever.docker.conda_deps(conda=None, conda_channels=None)

Constructs conda-based install command

rever.docker.docker_envvars(envvars=None)

Constructs a string that sets envvars in docker from a dictionary mapping environment variable names to value strings.

rever.docker.docker_root(root=None)

Gets the root-level directory for the repo that docker should use.

rever.docker.docker_source_from(source=None, url=None, root=None, workdir=None)

This constructs a docker command detailing how to get the source code for the project. In order of precedence, this will use,

  • A command as provided by source or $DOCKER_INSTALL_SOURCE

  • A URL to clone with $REVER_VCS as provided by url or $DOCKER_INSTALL_URL

  • A directory on the file system, defaulting to $DOCKER_ROOT or the root directory of the project repo.

rever.docker.ensure_images(base_file=None, base_image=None, force_base=False, base_from=None, apt=None, conda=None, conda_channels=None, pip=None, pip_requirements=None, install_file=None, install_image=None, force_install=False, root=None, command=None, envvars=None, workdir=None, url=None, source=None)

This verifies that docker images have been built for rever, and builds them if they haven’t.

rever.docker.git_configure(name=None, email=None)

Make basic git configuration.

rever.docker.incontainer(*args, **kwargs)

Macro context manager for running code within a container.

Parameters
imagestr or None, optional

Name of the image to run, defaults to $DOCKER_INSTALL_IMAGE. Environment variables will be expanded.

langstr, optional

Language to execute the body in, default xonsh. This may also be a full path to an executable.

argssequence of str, optional

Extra arguments to pass in after the executable but before the main body. Defaults to the standard compile flag '-c'.

envbool or dict, optional

Environment to use. This has the same meaning as in run_in_container(). Please see that function for more details, default True.

mountslist of dict, optional

Locations to mount in the running container. This has the same meaning as in run_in_container(). Please see that function for more details, default does not mount anything.

kwargsdict, optional

All other keyword arguments are passed into ensure_images() when the context is entered.

Returns
New macro context manager InContainer instance.
rever.docker.make_base_dockerfile(base_from=None, apt=None, conda=None, conda_channels=None, pip=None, pip_requirements=None, git_name=None, git_email=None)

Constructs the base dockerfile.

rever.docker.make_install_dockerfile(base=None, root=None, command=None, envvars=None, workdir=None, url=None, source=None)

Constructs a dockerfile that installs the source code.

rever.docker.mount_argument(mount)

Creates a mount command argument from a mount dictionary.

rever.docker.pip_deps(pip=None, pip_requirements=None)

Constructs pip-based install command

rever.docker.run_in_container(image, command, env=True, mounts=())

Run a command inside of a docker container.

Parameters
imagestr

Name of the image to start the container with.

commandlist of str

The command to run inside of the container.

envbool or dict, optional

If False, not environment variables are passed down to the container. If True, all rever environment variables are passed into the container (default). Otherwise, this is a dictionary of enviroment variable names (str) to values (str).

mountslist of dict, optional

This is a list of dictionaries that specifies files or directories, volumes, or temporary file systems to mount. Valid keys in the dictionary are:

  • 'type'

  • 'src' or 'source'

  • 'dst' or 'destination' or 'target'

  • 'ro' or 'readonly'

  • 'consistency'

See https://docs.docker.com/engine/reference/commandline/service_create/#add-bind-mounts-volumes-or-memory-filesystems for more information

rever.docker.should_build_image(dockerfile, image, maker, force=False, **kwargs)

Determines if we should (re)build the dockerfile image.

rever.docker.supports_mount()

Checks if docker run supports the –mount option.

rever.docker.text_wrapper()

Obtains docker text wrapper.

rever.docker.validate_mount(mount)

Validates a docker mount description. Returns a boolean flag and a message.

rever.docker.volume_arguments(mount)

Creates a list of volume arguments for older versions of docker that don’t support –mount.

rever.docker.wrap(s, indent='', suffix=' \\', width=70)

Wraps a dockerfile line.