我有一个expect
需要在 Dockerfile 中运行的脚本。但是,发送所有输入后脚本将终止。有趣的是,这docker build
就是成功。这是我的 MRE:
Dockerfile
FROM ubuntu:20.04
RUN apt -y update && \
apt -y install expect
COPY script.sh expect.exp /root/
RUN cd /root && \
./expect.exp
期望.exp
#!/usr/bin/expect -f
spawn ./script.sh
expect {
"Foo? " {
send "Y\n"
}
}
interact
脚本文件
#!/bin/bash -e
echo "Foo? "
read var
echo "Creating watermark"
touch watermark
我正在建设
docker build --progress=plain -t blah .
我懂了
...
#8 [4/4] RUN cd /root && ./expect.exp
#8 0.244 spawn ./script.sh
#8 0.245 + echo 'Foo? '
#8 0.245 Foo?
#8 0.245 + read var
#8 DONE 0.3s
/root/watermark
永远不会被创建。但是,如果我运行基于图像的容器并执行./expect.exp
,它会按预期工作。