LinuxCommandLibrary

kool

Run development tasks using Docker

TLDR

Create a project using a specific preset

$ kool create [preset] [project_name]
copy

Run a specific script defined in the kool.yml file in the current directory
$ kool run [script]
copy

Start/stop services in the current directory
$ kool [start|stop]
copy

Display status of the services in the current directory
$ kool status
copy

Update to the latest version
$ kool self-update
copy

Print the completion script for the specified shell
$ kool completion [bash|fish|powershell|zsh]
copy

SYNOPSIS

kool [command] [options]

PARAMETERS

completion
    Generate shell completion script for various shells.

create
    Create a kool.yml in the current directory.

exec
    Run a command inside a service container. Requires --service.

help
    Display help information about kool or its subcommands.

init
    Initialize a new or existing project with Kool.

run
    Run a one-off command in a new container using specified image and command. Requires --image and --command.

share
    Share your local environment in real time.

start
    Start the services defined in kool.yml.

stop
    Stop the services defined in kool.yml.

status
    Show the status of the services defined in kool.yml.

version
    Display the kool version.

DESCRIPTION

Kool simplifies development workflows by leveraging Docker. It provides a command-line interface (CLI) that automates common tasks, allowing developers to focus on code instead of container configuration.

Kool streamlines running applications within Docker containers. It can automatically configure and manage the necessary Docker containers, networks, and volumes for a project. It's designed to be lightweight and easy to integrate into existing projects. Kool works by defining a set of commands and configurations within a `kool.yml` file in the root of the project. This file specifies the required services (e.g., web server, database) and their dependencies. The CLI then uses this configuration to build, run, and manage the containers.

Kool is especially beneficial for teams working on complex projects with multiple dependencies, ensuring consistency across development environments. It offers commands for starting, stopping, and rebuilding services, as well as for running commands inside the containers, making it easier to debug and test applications. It helps to reduce the learning curve with Docker, while also providing a robust and repeatable way to manage containerized development.

CAVEATS

Kool requires Docker and Docker Compose to be installed and running on the system. It assumes the presence of a `kool.yml` configuration file in the project root. Network configuration, volumes and other parameters are defined using docker-compose.

It is designed to be lightweight and avoids the need for a dedicated orchestration system like Kubernetes. As such, it is not designed for production deployments, but rather development environments.

KOOL.YML CONFIGURATION

The `kool.yml` file defines the services, images, volumes, ports, and environment variables for your application. It is similar to docker-compose.yml, but is oriented towards local development use cases. Understanding the structure and options available in this file is crucial for effective Kool usage.

ENVIRONMENT VARIABLES

Environment variables can be used to configure application behavior within the containers. These variables can be defined in the `kool.yml` file or set directly in the shell environment. Passing env variables through .env files also works with Kool.

HISTORY

Kool emerged as a response to the complexities of managing Docker configurations for development. It was designed to provide a simpler, more intuitive interface for developers, streamlining the process of setting up and running containerized applications. The project emphasizes ease of use and integration, making it accessible to both novice and experienced Docker users.

SEE ALSO

Copied to clipboard