构建器

构建器配置控制应用程序如何通过 docker builddocker buildx build 构建。如果未指定配置,则 Kamal 将

  1. 创建一个名为 kamal-<service>-multiarch 的构建x上下文
  2. 使用 docker buildx build 利用该上下文为 linux/amd64、linux/arm64 构建多架构映像

请参阅 示例构建器 了解更多信息。

构建器选项

选项位于根配置中的构建器键下

builder:

多架构

启用多架构构建,默认为 true

  multiarch: false

本地配置

仅在启用多架构(默认设置)时使用的本地构建构建配置。

如果不存在远程配置,则默认情况下我们会为 amd64 和 arm64 构建。如果您只想为一种架构构建,则可以指定它。docker 套接字是可选的,并且在未指定时使用默认 docker 主机套接字

  local:
    arch: amd64
    host: /var/run/docker.sock

远程配置

也是只在启用多架构时才使用的远程构建构建配置。必需提供架构,并且可以为 amd64 或 arm64

  remote:
    arch: arm64
    host: ssh://docker@docker-builder

构建器缓存

类型必须为“gha”或“registry”。此映像仅用于注册表缓存

  cache:
    type: registry
    options: mode=max
    image: kamal-app-build-cache

构建上下文

如果未设置,则使用存储库的本地 git 克隆。这确保进行的构建干净,无未提交的更改。

要改用本地签出,您可以将上下文设置为 .,或设置到另一个目录的路径

  context: .

Dockerfile

用于构建的 Dockerfile,默认为 Dockerfile

  dockerfile: Dockerfile.production

构建目标

如果未设置,则使用默认目标

  target: production

构建参数

任何其他构建参数,已通过 --build-arg <key>=<value> 传递给 docker build

  args:
    ENVIRONMENT: production

引用构建参数

ARG RUBY_VERSION
FROM ruby:$RUBY_VERSION-slim as base

构建机密

从环境中读取值

  secrets:
    - SECRET1
    - SECRET2

引用构建机密

# Copy Gemfiles
COPY Gemfile Gemfile.lock ./

# Install dependencies, including private repositories via access token
# Then remove bundle cache with exposed GITHUB_TOKEN)
RUN --mount=type=secret,id=GITHUB_TOKEN \
  BUNDLE_GITHUB__COM=x-access-token:$(cat /run/secrets/GITHUB_TOKEN) \
  bundle install && \
  rm -rf /usr/local/bundle/cache

SSH

SSH 代理套接字或要公开给构建使用的密钥

  ssh: default=$SSH_AUTH_SOCK