Kamal 配置

配置是从 config/deploy.yml 中读取的

目标位置

在运行命令时,你可以使用 -d 标志指定目标位置,例如 kamal deploy -d staging

在这种情况下,配置还将从 config/deploy.staging.yml 中读取,并与基础配置合并。

扩展

Kamal 不会接受配置文件中未识别的关键项。

但是,你可能希望使用 YAML 锚定和别名来声明一个配置块,以避免重复。

你可以使用 x- 为配置部分添加前缀,以指示这是一个扩展。Kamal 将忽略扩展,并且不会引发错误。

服务名称

这是一个必填值。它用作容器名称的前缀。

service: myapp

Docker 镜像名称

该镜像将被推送到已配置的注册表中。

image: my-image

标签

添加到容器中的附加标签

labels:
  my-label: my-value

附加到容器中的附加卷

volumes:
  - /path/on/host:/path/in/container:ro

注册表

Docker 注册表配置,请参阅 Docker 注册表

registry:
  ...

服务器

要部署到的服务器,可选指定自定义角色,请参阅 服务器

servers:
  ...

环境变量

请参阅 环境变量

env:
  ...

资产桥接

用于跨部署的资产桥接,默认为 nil

如果 CSS 或 JS 文件发生更改,我们可能会在新的容器上收到对旧版本的请求,反之亦然。

为避免 404s,我们可以指定资产路径。Kamal 将用包含两组文件映射卷替换容器中的该路径。这需要在内容更改时更改文件名(例如在名称中包括内容的哈希)。

要配置此项,请设置资产路径

asset_path: /path/to/assets

钩子路径,默认为 .kamal/hooks

有关更多详细信息,请参阅 钩子

hooks_path: /user_home/kamal/hooks

要求指定目标位置

部署是否需要指定目标位置,默认为 false

require_destination: true

主要角色

这默认为 web,但如果你没有 web 角色,你可以更改此

primary_role: workers

允许空角色

是否允许没有任何服务器的角色。默认为 false

allow_empty_roles: false

停止等待时间

在终止容器之前,我们等待容器停止的时间,默认为 30 秒

stop_wait_time: 60

保留容器

我们保留的旧容器和镜像数量,默认为 5

retain_containers: 3

最小版本

部署此配置所需的 Kamal 最低版本,默认为 nil

minimum_version: 1.3.0

准备延迟

容器启动后等待容器启动的时间,默认为 7 秒。这仅适用于未指定健康检查的容器

readiness_delay: 4

运行目录

在主机上存储 kamal 运行时文件的目录,默认为 .kamal

run_directory: /etc/kamal

SSH 选项

请参阅 SSH

ssh:
  ...

构建器选项

请参阅 构建器

builder:
  ...

附件

在 Docker 中运行的其他服务,请参阅 配件

accessories:
  ...

Traefik

Traefik 代理用于零停机时间部署,请参阅 Traefik

traefik:
  ...

SSHKit

请参阅 SSHKit

sshkit:
  ...

启动选项

请参阅 启动

boot:
  ...

健康检查

配置健康检查命令、间隔和超时,请参阅 健康检查

healthcheck:
  ...

日志记录

Docker 日志记录配置,请参阅 日志记录

logging:
  ...