
= Introduction

Arion is a tool for building and running applications that
consist of multiple docker containers. It has special support
for docker images that are built with Nix, for a smooth
development experience and improved performance.

It is built on top of https://docs.docker.com/compose/overview/[Docker
Compose], which implements the container orchestration functionality.

Instead of configuring the compositions in YAML files like
`docker-compose.yaml`, Arion uses the https://nixos.org/nix/[Nix]
language to declare the compositions. Because of this, Arion gives you
the ability to declare your deployments, configuration and packaging
in the same language. By replacing multiple tools with a single
language, you decrease your mental load and you can more easily
refactor and maintain your configurations.

Although Arion can be used as a Docker Compose with an improved
configuration front end, there is more to be gained from integrating
with Nix. In particular, the more structured approach of Nix compared
to Dockerfiles allows the following:

 * Build components of your image in _parallel, automatically_.
 * Share packages between images, regardless of the order they were
   added.
 * Improve performance by _skipping_ container
   image creation.
 * Work with _structured data_ instead of strings,
   templates and a multitude of expression languages.
 * Refactor across deployments, configuration and
   packaging.
