You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kamal部署Rails遇Docker非TTY交互式登录错误求助

解决Kamal部署Rails应用时的Docker交互式登录错误

问题现象

使用Kamal结合Docker Hub部署Rails应用,手动执行docker login -u username -p api-key可成功登录,但运行kamal setup时出现错误:Cannot perform an interactive login from a non TTY device,无法完成镜像仓库的镜像创建。

解决方案

1. 修正deploy.yml的registry配置格式

你的registry部分的username和password使用了错误的数组格式,Kamal要求直接引用环境变量名称,正确配置如下:

registry:
  # Specify the registry server, if you're not using Docker Hub
  username: KAMAL_REGISTRY_USERNAME
  # Always use an access token rather than real password (pulled from .kamal/secrets).
  password: KAMAL_REGISTRY_PASSWORD

原数组写法(- KAMAL_REGISTRY_USERNAME)会导致Kamal无法正确读取凭证,进而触发交互式登录请求。

2. 修复.env文件的变量格式

.env文件中等号两侧的空格会导致环境变量解析失败,修正为:

KAMAL_REGISTRY_USERNAME="username"
KAMAL_REGISTRY_PASSWORD="api-key"
RAILS_MASTER_KEY="rails-master-key"

3. 预配置服务器的Docker登录(可选)

如果上述配置修正后仍存在问题,可手动在目标服务器(192.168.0.1)执行非交互式登录,提前保存凭证:

echo "你的api-key" | docker login -u "你的username" --password-stdin docker.io

此操作会将登录凭证保存到服务器的~/.docker/config.json中,Kamal后续操作会直接复用该凭证,避免触发登录流程。

问题原因

错误本质是Kamal在操作镜像时未正确获取到Docker Hub的凭证,导致尝试启动交互式登录,但非TTY环境无法响应。核心诱因是registry配置格式错误,导致凭证未被注入到Kamal的操作流程中。

内容的提问来源于stack exchange,提问作者user27915014

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 00:29:58