期望脚本在 Dockerfile 中提前终止

期望脚本在 Dockerfile 中提前终止

我有一个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,它会按预期工作。

相关内容