Docker-错误:无法从非TTY设备(GCP服务帐户)执行交互式登录



命令docker login -u _json_key --password-stdin https://gcr.io < ~/service-account.json在本地工作,但当我尝试在像Github Actions这样的CI环境中运行它时,我会收到以下错误。

错误:无法从非TTY设备执行交互式登录

##[error]进程已完成,退出代码为1。

oauth2accesstoken身份验证策略对我有效。

  1. 使用服务帐户登录gcloudcli

gcloud auth activate-service-account --key-file=${HOME}/service-account.json

  1. 打印访问令牌并使用它登录docker

gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://gcr.io

您似乎在用身份验证令牌模拟一个服务帐户来登录docker。您可以获得服务帐户的访问令牌。由于令牌是短暂的,请在使用它连接容器注册表之前不到一小时请求它。

此处记录了这些步骤。