Тайм-аут сборки Docker для запуска скрипта? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть файл Docker, который создает образ для большого проекта Perl.Последняя строка этого dockerfile запускает скрипт, который выполняет установку cpan для примерно 200 модулей.Кажется, что все это работает нормально, за исключением того, что через некоторое время модули перестают устанавливаться, и докер переходит к следующему шагу.Это как если бы у команды RUN был какой-то тайм-аут для сценария bash.

Кто-нибудь знает о таком таймауте?Я использую сценарий в 2 раза:

  1. Перечисление 200 модулей в моем файле dockerfile увеличивает общий размер / делает его немного грубым для поддержки.

  2. CPAN может иногда оказаться нереальным для поиска модулей, поэтому я использую сценарий для ведения списка модулей, которые не удалось установить, и повторите попытку после завершения начальной установки.

FROM ubuntu:16.04

COPY docker-configs/perl/ /myapp/

RUN apt-get update && \
    apt-get -qy upgrade && \
    apt-get install -qy perl build-essential cpanminus perl-doc perl-base perl-modules curl vim ssmtp && \
    cat /myapp/libs.txt | xargs apt-get install -qy && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*, /tmp/*, /var/tmp/*

COPY lib/ /myapp/lib/
COPY bin/ /myapp/bin/

COPY docker-scripts/install_perl_modules.sh /myapp/

#Install CPAN modules
RUN bash /myapp/install_perl_modules.sh

Редактировать: см. Ниже скрипт для установки модулей CPAN:

while read p; do

    cpanm $p

    if [[ $? == 1 ]]; then
        echo "!!!"
        echo "!!! $p failed install!  Will re-attempt later..."
        echo "!!!"
        RETRY="$RETRY $p"
    else
        echo "-- installed $p"
        echo "--"
    fi
done < /myapp/modules.txt

while read p; do

    echo "-- 2nd attept to install $p"

    cpanm $p

    if [[ $? == 1 ]]; then
        FAILED="$FAILED $p"
    fi
done

Я немного сократил скрипт, но вы должны увидеть общий поток.

...