expect
Dockerfileで実行する必要があるスクリプトがあります。ただし、すべての入力が送信された後、スクリプトは終了します。面白いのは、docker build
それが成功だということです。これは私のMREです:
ドッカーファイル
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
どおりに機能します。