注册表

默认注册表是 Docker Hub,但你可以使用 registry/server 进行更改

对密钥(在本例中为 DOCKER_REGISTRY_TOKEN)的引用将在本地环境中查找密钥。

registry:
  server: registry.digitalocean.com
  username:
    - DOCKER_REGISTRY_TOKEN
  password:
    - DOCKER_REGISTRY_TOKEN

使用 AWS ECR 作为容器注册表

需要在本地安装 aws CLI才能进行此操作。AWS ECR 的访问令牌仅在 12 小时内有效。为了不必每次都手动重新生成令牌,可以在 deploy.yml 文件中使用 ERB 通过外壳访问 aws CLI 命令并获取令牌

registry:
  server: <your aws account id>.dkr.ecr.<your aws region id>.amazonaws.com
  username: AWS
  password: <%= %x(aws ecr get-login-password) %>

使用 GCP Artifact Registry 作为容器注册表

要登录到 Artifact Registry,需要创建一个服务帐号设置角色和权限。通常,分配一个 roles/artifactregistry.writer 角色应足够。

服务帐号准备就绪后,需要生成并下载一个 JSON 密钥,对它进行 base64 编码并添加到 .env 中

echo "KAMAL_REGISTRY_PASSWORD=$(base64 -i /path/to/key.json)" | tr -d "\\n"  >> .env

使用环境变量作为密码,使用 _json_key_base64 作为用户名。这是最终配置

registry:
  server: <your registry region>-docker.pkg.dev
  username: _json_key_base64
  password:
    - KAMAL_REGISTRY_PASSWORD

验证配置

可以通过运行进行配置验证

kamal registry login