【发布时间】:2019-04-19 17:34:24
【问题描述】:
假设我有两台服务器,A 和 B。我还有一个在服务器 A 上执行的 bash 脚本,如下所示:
build_test.sh
#!/bin/bash
ssh user@B <<'ENDSSH'
echo "doing test"
bash -ex test.sh
echo "completed test"
ENDSSH
test.sh
#!/bin/bash
docker exec -i my_container /bin/bash -c "echo hi!"
问题是completed test 没有打印到终端。
这是运行build_test.sh的输出:
$ ./build_test
doing test
+ docker exec -i my_container /bin/bash -c "echo hi!"
hi!
我希望 completed test 在 hi! 之后输出,但事实并非如此。我该如何解决这个问题?
【问题讨论】:
-
docker可能正在消耗它从ssh继承的其余标准输入(这是您尝试运行的脚本)。 -
如果是这样,有没有办法告诉 docker 不要那样做?
-
docker ... < /dev/null. -
成功了!把它作为一个答案,我会接受的。
-
您也可以删除
-i标志。
标签: bash docker ssh docker-exec