arion/docs/modules/ROOT/partials/NixOSOptions.adoc
2022-12-02 10:25:01 +00:00

1321 lines
20 KiB
Plaintext

= Arion options
== docker-compose.extended
Attribute set that will be turned into the x-arion section of the docker-compose.yaml file.
[discrete]
=== details
Type:: attribute set
No Default:: {blank}
No Example:: {blank}
== docker-compose.raw
Attribute set that will be turned into the docker-compose.yaml file, using Nix's toJSON builtin.
[discrete]
=== details
Type:: attribute set
No Default:: {blank}
No Example:: {blank}
== enableDefaultNetwork
Whether to define the default network:
```nix
networks.default = {
name = config.project.name;
};
```
[discrete]
=== details
Type:: boolean
Default::
+
----
true
----
No Example:: {blank}
== host.nixStorePrefix
Prefixes store paths on the host, allowing the Nix store to be
stored at an alternate location without altering the format of
store paths.
For example: instead of mounting the host's /nix/store as the
container's /nix/store, this will mount /mnt/foo/nix/store
as the container's /nix/store.
[discrete]
=== details
Type:: string
Default::
+
----
""
----
Example::
+
----
"/mnt/foo"
----
== host.uid
The numeric user id (UID) of the user running arion.
This lets you to write modules that interact with the host
user's files, which is helpful for local development, but not
intended for production-like deployment scenarios.
[discrete]
=== details
Type:: signed integer
No Default:: {blank}
No Example:: {blank}
== networks
See link:https://docs.docker.com/compose/compose-file/#networks-top-level-element[Docker Compose#networks-top-level-element]
[discrete]
=== details
Type:: lazy attribute set of (submodule)
No Default:: {blank}
No Example:: {blank}
== networks.<name>.attachable
See link:https://docs.docker.com/compose/compose-file/#attachable[Docker Compose#attachable]
[discrete]
=== details
Type:: boolean
No Default:: {blank}
Example::
+
----
true
----
== networks.<name>.driver
`"none"`, `"host"`, or a platform-specific value.
See link:https://docs.docker.com/compose/compose-file/#driver[Docker Compose#driver]
[discrete]
=== details
Type:: string
No Default:: {blank}
No Example:: {blank}
== networks.<name>.driver_opts
See link:https://docs.docker.com/compose/compose-file/#driver_opts[Docker Compose#driver_opts]
[discrete]
=== details
Type:: lazy attribute set of raw value
No Default:: {blank}
No Example:: {blank}
== networks.<name>.enable_ipv6
Whether we've entered the 21st century yet.
See link:https://docs.docker.com/compose/compose-file/#enable_ipv6[Docker Compose#enable_ipv6]
[discrete]
=== details
Type:: boolean
No Default:: {blank}
No Example:: {blank}
== networks.<name>.external
When `true`, don't create or destroy the network, but assume that it
exists.
See link:https://docs.docker.com/compose/compose-file/#external[Docker Compose#external]
[discrete]
=== details
Type:: boolean
No Default:: {blank}
No Example:: {blank}
== networks.<name>.internal
Achieves "external isolation".
See link:https://docs.docker.com/compose/compose-file/#internal[Docker Compose#internal]
[discrete]
=== details
Type:: boolean
Default::
+
----
false
----
No Example:: {blank}
== networks.<name>.ipam
Manage IP addresses.
See link:https://docs.docker.com/compose/compose-file/#ipam[Docker Compose#ipam]
[discrete]
=== details
Type:: raw value
No Default:: {blank}
No Example:: {blank}
== networks.<name>.labels
Metadata.
See link:https://docs.docker.com/compose/compose-file/#labels[Docker Compose#labels]
[discrete]
=== details
Type:: attribute set of string
No Default:: {blank}
No Example:: {blank}
== networks.<name>.name
Set a custom name for the network.
It shares a namespace with other projects' networks. `name` is used as-is.
Note the `default` network's default `name` is set to `project.name` by Arion.
See link:https://docs.docker.com/compose/compose-file/#name[Docker Compose#name]
[discrete]
=== details
Type:: string
No Default:: {blank}
No Example:: {blank}
== out.dockerComposeYaml
A derivation that produces a docker-compose.yaml file for this composition.
[discrete]
=== details
Type:: package
No Default:: {blank}
Read Only:: {blank}
No Example:: {blank}
== out.dockerComposeYamlAttrs
The text of out.dockerComposeYaml.
[discrete]
=== details
Type:: attribute set of unspecified value
No Default:: {blank}
Read Only:: {blank}
No Example:: {blank}
== out.dockerComposeYamlText
The text of out.dockerComposeYaml.
[discrete]
=== details
Type:: string
No Default:: {blank}
Read Only:: {blank}
No Example:: {blank}
== project.name
Name of the project.
See link:https://docs.docker.com/compose/reference/envvars/#compose_project_name[COMPOSE_PROJECT_NAME]
This is not optional, because getting the project name from a directory name tends to produce different results for different repo checkout location names.
[discrete]
=== details
Type:: string
No Default:: {blank}
No Example:: {blank}
== services
An attribute set of service configurations. A service specifies how to run an image as a container.
[discrete]
=== details
Type:: attribute set of (submodule)
No Default:: {blank}
No Example:: {blank}
== services.<name>.composition
The composition configuration.
[discrete]
=== details
Type:: attribute set
No Default:: {blank}
Read Only:: {blank}
No Example:: {blank}
== services.<name>.host
The composition-level host option values.
[discrete]
=== details
Type:: attribute set
No Default:: {blank}
Read Only:: {blank}
No Example:: {blank}
== services.<name>.image.command
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.image.contents
Top level paths in the container.
[discrete]
=== details
Type:: list of package
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.image.enableRecommendedContents
Add the `/bin/sh` and `/usr/bin/env` symlinks and some lightweight
files.
[discrete]
=== details
Type:: boolean
Default::
+
----
false
----
No Example:: {blank}
== services.<name>.image.name
A human readable name for the docker image.
Shows up in the `docker ps` output in the
`IMAGE` column, among other places.
[discrete]
=== details
Type:: string
Default::
+
----
{"_type":"literalExpression","text":"\"localhost/\" + config.service.name"}
----
No Example:: {blank}
== services.<name>.image.nixBuild
Whether to build this image with Nixpkgs'
`dockerTools.buildLayeredImage`
and then load it with `docker load`.
By default, an image will be built with Nix unless `service.image`
is set. See also `image.name`, which defaults to
the service name.
[discrete]
=== details
Type:: boolean
No Default:: {blank}
No Example:: {blank}
== services.<name>.image.rawConfig
This is a low-level fallback for when a container option has not
been modeled in the Arion module system.
This attribute set does not have an appropriate merge function.
Please use the specific `image` options instead.
Run-time configuration of the container. A full list of the
options is available in the https://github.com/moby/moby/blob/master/image/spec/v1.2.md#image-json-field-descriptions[Docker Image Specification
v1.2.0].
[discrete]
=== details
Type:: attribute set of unspecified value
Default::
+
----
{}
----
No Example:: {blank}
== services.<name>.nixos.build
NixOS build products from `config.system.build`, such as `toplevel` and `etc`.
This option is unused by default, because not all images use NixOS.
One way to use this is to enable `nixos.useSystemd`, but the
NixOS configuration can be used in other ways.
[discrete]
=== details
Type:: attribute set
No Default:: {blank}
Read Only:: {blank}
No Example:: {blank}
== services.<name>.nixos.configuration
Modules to add to the NixOS configuration.
This option is unused by default, because not all images use NixOS.
One way to use this is to enable `nixos.useSystemd`, but the
NixOS configuration can be used in other ways.
[discrete]
=== details
Type:: (list of unspecified value) or unspecified value convertible to it
Default::
+
----
{}
----
No Example:: {blank}
== services.<name>.nixos.evaluatedConfig
Evaluated NixOS configuration, to be read by service-level modules.
This option is unused by default, because not all images use NixOS.
One way to use this is to enable `nixos.useSystemd`, but the
NixOS configuration can be used in other ways.
[discrete]
=== details
Type:: attribute set
No Default:: {blank}
Read Only:: {blank}
No Example:: {blank}
== services.<name>.nixos.useSystemd
When enabled, call the NixOS systemd-based init system.
Configure NixOS with the `nixos.configuration` option.
[discrete]
=== details
Type:: boolean
Default::
+
----
false
----
No Example:: {blank}
== services.<name>.out.extendedInfo
Information about a service to include in the Docker Compose file,
but that will not be used by the `docker-compose`> command
itself.
It will be inserted in `x-arion.serviceInfo.<service.name>`.
[discrete]
=== details
Type:: attribute set of unspecified value
Default::
+
----
{}
----
No Example:: {blank}
== services.<name>.out.service
Raw input for the service in `docker-compose.yaml`.
You should not need to use this option. If anything is
missing, please contribute the missing option.
This option is user accessible because it may serve as an
escape hatch for some.
[discrete]
=== details
Type:: attribute set of unspecified value
No Default:: {blank}
No Example:: {blank}
== services.<name>.service.build.context
Locates a Dockerfile to use for creating an image to use in this service.
See link:https://docs.docker.com/compose/compose-file/#context[Docker Compose#context]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.capabilities
Enable/disable linux capabilities, or pick Docker's default.
Setting a capability to `true` means that it will be
"added". Setting it to `false` means that it will be "dropped".
See link:https://docs.docker.com/compose/compose-file/#cap_add-cap_drop[Docker Compose#cap_add-cap_drop]
Omitted and `null` capabilities will therefore be set
according to Docker's link:https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities[default list of capabilities.]
[discrete]
=== details
Type:: attribute set of (null or boolean)
Default::
+
----
{}
----
Example::
+
----
{"ALL":true,"NET_ADMIN":false,"SYS_ADMIN":false}
----
== services.<name>.service.command
See link:https://docs.docker.com/compose/compose-file/#command[Docker Compose#command]
[discrete]
=== details
Type:: null or unspecified value
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.container_name
See link:https://docs.docker.com/compose/compose-file/#container_name[Docker Compose#container_name]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.defaultExec
Container program and arguments to invoke when calling
`arion exec <service.name>` without further arguments.
[discrete]
=== details
Type:: list of string
Default::
+
----
["/bin/sh"]
----
No Example:: {blank}
== services.<name>.service.depends_on
See link:https://docs.docker.com/compose/compose-file/#depends_on[Docker Compose#depends_on]
[discrete]
=== details
Type:: (list of string) or attribute set of (submodule)
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.devices
See link:https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities[`docker run --device` documentation]
See link:https://docs.docker.com/compose/compose-file/#devices[Docker Compose#devices]
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.dns
See link:https://docs.docker.com/compose/compose-file/#dns[Docker Compose#dns]
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
Example::
+
----
["8.8.8.8","8.8.4.4"]
----
== services.<name>.service.entrypoint
See link:https://docs.docker.com/compose/compose-file/#entrypoint[Docker Compose#entrypoint]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.env_file
See link:https://docs.docker.com/compose/compose-file/#env_file[Docker Compose#env_file]
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.environment
See link:https://docs.docker.com/compose/compose-file/#environment[Docker Compose#environment]
[discrete]
=== details
Type:: attribute set of (string or signed integer)
Default::
+
----
{}
----
No Example:: {blank}
== services.<name>.service.expose
See link:https://docs.docker.com/compose/compose-file/#expose[Docker Compose#expose]
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.external_links
See link:https://docs.docker.com/compose/compose-file/#external_links[Docker Compose#external_links]
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.extra_hosts
See link:https://docs.docker.com/compose/compose-file/#extra_hosts[Docker Compose#extra_hosts]
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.healthcheck
See link:https://docs.docker.com/compose/compose-file/#healthcheck[Docker Compose#healthcheck]
[discrete]
=== details
Type:: submodule
No Default:: {blank}
No Example:: {blank}
== services.<name>.service.healthcheck.interval
See link:https://docs.docker.com/compose/compose-file/#healthcheck[Docker Compose#healthcheck]
[discrete]
=== details
Type:: string
Default::
+
----
"30s"
----
Example::
+
----
"1m"
----
== services.<name>.service.healthcheck.retries
See link:https://docs.docker.com/compose/compose-file/#healthcheck[Docker Compose#healthcheck]
[discrete]
=== details
Type:: signed integer
Default::
+
----
3
----
No Example:: {blank}
== services.<name>.service.healthcheck.start_period
See link:https://docs.docker.com/compose/compose-file/#healthcheck[Docker Compose#healthcheck]
[discrete]
=== details
Type:: string
Default::
+
----
"0s"
----
Example::
+
----
"30s"
----
== services.<name>.service.healthcheck.test
See link:https://docs.docker.com/compose/compose-file/#healthcheck[Docker Compose#healthcheck]
[discrete]
=== details
Type:: null or (list of string)
Default::
+
----
null
----
Example::
+
----
["CMD","pg_isready"]
----
== services.<name>.service.healthcheck.timeout
See link:https://docs.docker.com/compose/compose-file/#healthcheck[Docker Compose#healthcheck]
[discrete]
=== details
Type:: string
Default::
+
----
"30s"
----
Example::
+
----
"10s"
----
== services.<name>.service.hostStoreAsReadOnly
Adds a ':ro' (read-only) access mode to the host nix store bind mount.
[discrete]
=== details
Type:: boolean
Default::
+
----
true
----
No Example:: {blank}
== services.<name>.service.hostname
Analogous to the `docker run` counterpart.
See link:https://docs.docker.com/compose/compose-file/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir[Docker Compose#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.image
See link:https://docs.docker.com/compose/compose-file/#image[Docker Compose#image]
[discrete]
=== details
Type:: string
No Default:: {blank}
No Example:: {blank}
== services.<name>.service.labels
See link:https://docs.docker.com/compose/compose-file/#labels[Docker Compose#labels]
[discrete]
=== details
Type:: attribute set of string
Default::
+
----
{}
----
Example::
+
----
{"com.example.foo":"bar","traefik.enable":"true","traefik.http.routers.my-service.entrypoints":"web","traefik.http.routers.my-service.rule":"Host(`my-service.localhost`)"}
----
== services.<name>.service.links
See link:https://docs.docker.com/compose/compose-file/#links[Docker Compose#links]
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.name
The name of the service - `<name>` in the composition-level `services.<name>`
[discrete]
=== details
Type:: string
No Default:: {blank}
Read Only:: {blank}
No Example:: {blank}
== services.<name>.service.network_mode
See link:https://docs.docker.com/compose/compose-file/#network_mode[Docker Compose#network_mode]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.networks
See link:https://docs.docker.com/compose/compose-file/#networks[Docker Compose#networks]
[discrete]
=== details
Type:: null or (list of string)
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.ports
Expose ports on host. "host:container" or structured.
See link:https://docs.docker.com/compose/compose-file/#ports[Docker Compose#ports]
[discrete]
=== details
Type:: list of unspecified value
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.privileged
Analogous to the `docker run` counterpart.
See link:https://docs.docker.com/compose/compose-file/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir[Docker Compose#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir]
[discrete]
=== details
Type:: null or boolean
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.restart
See link:https://docs.docker.com/compose/compose-file/#restart[Docker Compose#restart]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.stop_signal
See link:https://docs.docker.com/compose/compose-file/#stop_signal[Docker Compose#stop_signal]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.sysctls
See link:https://docs.docker.com/compose/compose-file/#sysctls[Docker Compose#sysctls]
[discrete]
=== details
Type:: attribute set of (string or signed integer)
Default::
+
----
{}
----
No Example:: {blank}
== services.<name>.service.tmpfs
See link:https://docs.docker.com/compose/compose-file/#tmpfs[Docker Compose#tmpfs]
[discrete]
=== details
Type:: list of string
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.tty
Analogous to the `docker run` counterpart.
See link:https://docs.docker.com/compose/compose-file/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir[Docker Compose#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir]
[discrete]
=== details
Type:: null or boolean
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.useHostNixDaemon
Make the host Nix daemon available.
[discrete]
=== details
Type:: boolean
Default::
+
----
false
----
No Example:: {blank}
== services.<name>.service.useHostStore
Bind mounts the host store if enabled, avoiding copying.
[discrete]
=== details
Type:: boolean
Default::
+
----
false
----
No Example:: {blank}
== services.<name>.service.user
Analogous to the `docker run` counterpart.
See link:https://docs.docker.com/compose/compose-file/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir[Docker Compose#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}
== services.<name>.service.volumes
See link:https://docs.docker.com/compose/compose-file/#volumes[Docker Compose#volumes]
[discrete]
=== details
Type:: list of unspecified value
Default::
+
----
[]
----
No Example:: {blank}
== services.<name>.service.working_dir
Analogous to the `docker run` counterpart.
See link:https://docs.docker.com/compose/compose-file/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir[Docker Compose#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir]
[discrete]
=== details
Type:: null or string
Default::
+
----
null
----
No Example:: {blank}