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
예상대로 작동합니다.