Ant*_*ony 329 jenkins docker jenkins-pipeline
我正在运行以下命令Jenkinsfile.但是,我收到错误"输入设备不是TTY".
docker run -v $PWD:/foobar -it cloudfoundry/cflinuxfs2 /foobar/script.sh
Run Code Online (Sandbox Code Playgroud)
有没有办法Jenkinsfile从不进行交互模式运行脚本?
我基本上有一个名为的文件script.sh,我想在Docker容器中运行.
BMi*_*tch 503
-it从cli中删除它以使其不具有交互性并删除TTY.如果您不需要,例如在Jenkins或cron脚本中运行命令,则应该执行此操作.
或者,-i如果您输入了不是来自TTY的docker命令,则可以将其更改为.如果您有类似xyz | docker ...或docker ... <input在命令行中,做到这一点.
或者,-t如果您需要TTY支持但在输入设备上没有它,则可以将其更改为.这样做是为了对日志中的输出进行颜色格式化,或者以后用适当的终端连接到容器时.
或者,如果您需要交互式终端且未在Linux或MacOS上的终端中运行,请使用其他命令行界面.据报道,PowerShell在Windows上包含此支持.
什么是TTY?它是一个终端界面,支持彩色输出,转义序列,移动光标等,这些都来自于连接到大型机的哑终端.今天它由Linux命令终端和ssh接口提供.有关详细信息,请参阅维基百科文章.
Pio*_*yna 69
对于那些在Windows上遇到此错误和git bash的人来说,只需使用PowerShell即可-it完美运行.
Gre*_*i64 45
如果你(像我一样)在Windows上使用git bash,你只需要放
winpty
在你的'泊坞线'之前:
winpty docker exec -it some_cassandra bash
Run Code Online (Sandbox Code Playgroud)
Gar*_*oyd 27
我相信你需要在TTY中为docker分配一个TTY(-t选项).詹金斯不是在TTY中执行其工作.
话虽如此,您在Jenkins中运行的脚本可能也想在本地运行.在这种情况下,分配TTY非常方便,因此在本地运行时可以发送ctrl+等信号c.
要解决此问题,您的脚本可以选择使用该-t选项,如下所示:
test -t 1 && USE_TTY="-t"
docker run ${USE_TTY} ...
Run Code Online (Sandbox Code Playgroud)
yes*_*ema 20
这并不是您要问的,但是:
该-T键将有助于谁使用人泊坞窗,撰写EXEC!
docker-compose -f /srv/backend_bigdata/local.yml exec -T postgres backup
Run Code Online (Sandbox Code Playgroud)
小智 9
同样的情况在这里,我运行以下命令 throw .sh script(bash) 和 python .py 但是,我收到相同的错误“输入设备不是 TTY ”。
就我而言,我尝试从“生产”环境的正在运行的容器中获取转储,并进行身份验证并传递一些参数,然后获取mssql 数据库容器的.bak文件的输出。
从命令中删除-it 。如果你想保持交互,请保留-i。
当使用'git bash'时,
1)我执行命令:
docker exec -it 726fe4999627 /bin/bash
Run Code Online (Sandbox Code Playgroud)
我有错误:
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
Run Code Online (Sandbox Code Playgroud)
2)然后,我执行命令:
winpty docker exec -it 726fe4999627 /bin/bash
Run Code Online (Sandbox Code Playgroud)
我还有另一个错误:
OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused "exec: \"D:/Git/usr/bin/
bash.exe\": stat D:/Git/usr/bin/bash.exe: no such file or directory": unknown
Run Code Online (Sandbox Code Playgroud)
3)第三,我执行:
winpty docker exec -it 726fe4999627 bash
Run Code Online (Sandbox Code Playgroud)
有效。
当我使用“ powershell”时,一切运行良好。
使用 docker-compose exec -T 通过 Jenkins 为我解决了这个问题
docker-compose exec -T containerName php script.php
| 归档时间: |
|
| 查看次数: |
186149 次 |
| 最近记录: |