kool
Run development tasks using Docker
TLDR
Create a project using a specific preset
Run a specific script defined in the kool.yml file in the current directory
Start/stop services in the current directory
Display status of the services in the current directory
Update to the latest version
Print the completion script for the specified shell
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
docker(1), docker-compose(1)