Table of Contents
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 Docker Compose, which implements the container orchestration functionality.
Instead of configuring the compositions in YAML files like
docker-compose.yaml
, Arion uses the 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:
TODO: describe: using nix-shell or in a script, building images as part of nix-build, pinning, see also todomvc-nix.
build.dockerComposeYaml
Type: package
Declared by:
src/nix/docker-compose-module.nix |
build.dockerComposeYamlText
Type: Concatenated string
Declared by:
src/nix/docker-compose-module.nix |
docker-compose.raw
Type: attribute set
Declared by:
src/nix/docker-compose-module.nix |
docker-compose.services
Type: attribute set of list of unspecifieds or unspecified convertible to its
Default:
{
}
Declared by:
src/nix/docker-compose-module.nix |
build.service
Type: attribute set of unspecifieds
Declared by:
src/nix/service.nix |
service.build.context
Type: null or Concatenated string
Default:
null
Declared by:
src/nix/service.nix |
service.command
Type: null or unspecified
Default:
null
Declared by:
src/nix/service.nix |
service.depends_on
Type: list of Concatenated strings
Default:
[
]
Declared by:
src/nix/service.nix |
service.entrypoint
Type: null or Concatenated string
Default:
null
Declared by:
src/nix/service.nix |
service.environment
Type: attribute set of Concatenated string or signed integers
Default:
{
}
Declared by:
src/nix/service.nix |
service.expose
Type: list of Concatenated strings
Default:
[
]
Declared by:
src/nix/service.nix |
service.image
Type: Concatenated string
Declared by:
src/nix/service.nix |
service.ports
Expose ports on host. "host:container" or structured. See https://docs.docker.com/compose/compose-file/#ports
Type: list of unspecifieds
Default:
[
]
Declared by:
src/nix/service.nix |
service.restart
Type: null or Concatenated string
Default:
null
Declared by:
src/nix/service.nix |
service.useHostStore
Bind mounts the host store if enabled, avoiding copying.
Type: boolean
Default:
false
Declared by:
src/nix/service-host-store.nix |
service.volumes
Type: list of unspecifieds
Default:
[
]
Declared by:
src/nix/service.nix |
service.working_dir
Type: null or Concatenated string
Default:
null
Declared by:
src/nix/service.nix |