构建器
构建器配置控制应用程序如何通过 docker build
或 docker buildx build
构建。如果未指定配置,则 Kamal 将
- 创建一个名为
kamal-<service>-multiarch
的构建x上下文 - 使用
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