Dockerfileはスクリプトが早く終了すると予想されます。

Dockerfileはスクリプトが早く終了すると予想されます。

expectDockerfileで実行する必要があるスクリプトがあります。ただし、すべての入力が送信された後、スクリプトは終了します。面白いのは、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どおりに機能します。

ベストアンサー1

おすすめ記事