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!
175 lines
3.7 KiB
YAML
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:
|
|
...
|