注册表
默认注册表是 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