我正在Jenkinsfile中运行以下命令。然而,我收到错误“输入设备不是TTY”。
docker run -v $PWD:/foobar -it cloudfoundry/cflinuxfs2 /foobar/script.sh
有没有一种方法可以在不进行交互模式的情况下从Jenkinsfile运行脚本?
我基本上有一个名为script.sh的文件,我想在Docker容器中运行。
我正在Jenkinsfile中运行以下命令。然而,我收到错误“输入设备不是TTY”。
docker run -v $PWD:/foobar -it cloudfoundry/cflinuxfs2 /foobar/script.sh
有没有一种方法可以在不进行交互模式的情况下从Jenkinsfile运行脚本?
我基本上有一个名为script.sh的文件,我想在Docker容器中运行。
当前回答
如果使用windows,请尝试使用cmd,对我来说它是有效的。检查docker是否已启动。
其他回答
同样的情况在这里,我运行以下命令throw.sh脚本(bash)和python.py然而,我得到了同样的错误“输入设备不是TTY”。
在我的例子中,我试图通过身份验证从“production”env的运行容器中获取转储,并传递一些参数,然后获取mssql数据库容器的.bak文件的输出。
从命令中删除-it。如果你想保持它的交互性,那么就保持-i。
您可以检查我的.sh文件和一个获取转储的长命令。
对于docker运行DON NOT USE-it标志
(如BMitch所述)
这并不完全是你所要求的,但对其他人也很有用:
对于docker compose exec,使用-T标志!
-T键将帮助使用docker的人编写exec!(它禁用伪tty分配)
例如:
docker-compose -f /srv/backend_bigdata/local.yml exec -T postgres backup
or
docker-compose exec -T mysql mysql -uuser_name -ppassword database_name < dir/to/db_backup.sql
而不是使用-it使用--tty
所以你的docker运行应该是这样的:
docker run -v $PWD:/foobar --tty cloudfoundry/cflinuxfs2 /foobar/script.sh
如果使用windows,请尝试使用cmd,对我来说它是有效的。检查docker是否已启动。
对于那些在Windows上遇到这个错误和gitbash的人来说,只需使用PowerShell,它就可以完美地工作了。