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

관련 정보