Github Actions登录Docker报错:无法从非TTY设备执行交互式登录
解决Github Actions中Docker登录报错:Cannot perform an interactive login from a non-TTY device
问题根源
你在docker login命令里同时使用了-p参数和--password-stdin参数,这两个参数是互斥的。Docker检测到这种冲突后,会尝试启动交互式登录流程,但Github Actions的运行环境是非TTY设备,无法支持交互式操作,因此抛出该错误。
修复方案
任选以下两种正确的写法之一修改你的登录步骤:
方案1:直接用-p传递密码(移除--password-stdin)
- run: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD env: DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}} DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
方案2:用--password-stdin通过管道传递密码(移除-p参数)
- run: echo "$DOCKER_PASSWORD" | docker login -u $DOCKER_USERNAME --password-stdin env: DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}} DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
额外注意事项
确认你存储在Dependabot secrets中的DOCKER_USERNAME和DOCKER_PASSWORD(即DockerHub Token)已正确配置,且变量名与yaml文件中的引用完全一致。
内容的提问来源于stack exchange,提问作者Iynga Iyngaran Iyathurai
相关产品推荐
相关产品推荐

