Files
kamal/lib/kamal/configuration/docs/configuration.yml
Donal McBreen b8af719bb7 Add aliases to Kamal
Aliases are defined in the configuration file under the `aliases` key.

The configuration is a map of alias name to command. When we run the
command the we just do a literal replacement of the alias with the
string.

So if we have:

```yaml
aliases:
  console: app exec -r console -i --reuse "rails console"
```

Then running `kamal console -r workers` will run the command

```sh
$ kamal app exec -r console -i --reuse "rails console" -r workers
```

Because of the order Thor parses the arguments, this allows us to
override the role from the alias command.

There might be cases where we need to munge the command a bit more but
that would involve getting into Thor command parsing internals,
which are complicated and possibly subject to change.

There's a chance that your aliases could conflict with future built-in
commands, but there's not likely to be many of those and if it happens
you'll get a validation error when you upgrade.

Thanks to @dhnaranjo for the idea!
2024-08-26 10:47:43 +01:00

175 lines
3.7 KiB
YAML

# Kamal Configuration
#
# Configuration is read from the `config/deploy.yml`
#
# Destinations
#
# When running commands, you can specify a destination with the `-d` flag,
# e.g. `kamal deploy -d staging`
#
# In this case the configuration will also be read from `config/deploy.staging.yml`
# and merged with the base configuration.
# Extensions
#
# Kamal will not accept unrecognized keys in the configuration file.
#
# However, you might want to declare a configuration block using YAML anchors
# and aliases to avoid repetition.
#
# You can use prefix a configuration section with `x-` to indicate that it is an
# extension. Kamal will ignore the extension and not raise an error.
# The service name
# This is a required value. It is used as the container name prefix.
service: myapp
# The Docker image name
#
# The image will be pushed to the configured registry.
image: my-image
# Labels
#
# Additional labels to add to the container
labels:
my-label: my-value
# Additional volumes to mount into the container
volumes:
- /path/on/host:/path/in/container:ro
# Registry
#
# The Docker registry configuration, see kamal docs registry
registry:
...
# Servers
#
# The servers to deploy to, optionally with custom roles, see kamal docs servers
servers:
...
# Environment variables
#
# See kamal docs env
env:
...
# Asset Bridging
#
# Used for asset bridging across deployments, default to `nil`
#
# If there are changes to CSS or JS files, we may get requests
# for the old versions on the new container and vice-versa.
#
# To avoid 404s we can specify an asset path.
# Kamal will replace that path in the container with a mapped
# volume containing both sets of files.
# This requires that file names change when the contents change
# (e.g. by including a hash of the contents in the name).
# To configure this, set the path to the assets:
asset_path: /path/to/assets
# Path to hooks, defaults to `.kamal/hooks`
# See https://kamal-deploy.org/docs/hooks for more information
hooks_path: /user_home/kamal/hooks
# Require destinations
#
# Whether deployments require a destination to be specified, defaults to `false`
require_destination: true
# The primary role
#
# This defaults to `web`, but if you have no web role, you can change this
primary_role: workers
# Allowing empty roles
#
# Whether roles with no servers are allowed. Defaults to `false`.
allow_empty_roles: false
# Stop wait time
#
# How long we wait for a container to stop before killing it, defaults to 30 seconds
stop_wait_time: 60
# Retain containers
#
# How many old containers and images we retain, defaults to 5
retain_containers: 3
# Minimum version
#
# The minimum version of Kamal required to deploy this configuration, defaults to nil
minimum_version: 1.3.0
# Readiness delay
#
# Seconds to wait for a container to boot after is running, default 7
# This only applies to containers that do not specify a healthcheck
readiness_delay: 4
# Run directory
#
# Directory to store kamal runtime files in on the host, default `.kamal`
run_directory: /etc/kamal
# SSH options
#
# See kamal docs ssh
ssh:
...
# Builder options
#
# See kamal docs builder
builder:
...
# Accessories
#
# Additionals services to run in Docker, see kamal docs accessory
accessories:
...
# Traefik
#
# The Traefik proxy is used for zero-downtime deployments, see kamal docs traefik
traefik:
...
# SSHKit
#
# See kamal docs sshkit
sshkit:
...
# Boot options
#
# See kamal docs boot
boot:
...
# Healthcheck
#
# Configuring healthcheck commands, intervals and timeouts, see kamal docs healthcheck
healthcheck:
...
# Logging
#
# Docker logging configuration, see kamal docs logging
logging:
...
# Aliases
#
# Alias configuration, see kamal docs alias
aliases:
...