运行脚本的Docker构建超时?

时间:2019-02-06 15:47:15

标签: perl docker cpan

我有一个Docker文件,可为大型Perl项目构建映像。该dockerfile的最后一行运行一个脚本,该脚本执行约200个模块的cpan安装。除了经过一段时间后,模块停止安装,然后docker进入下一步,这一切似乎一切正常。就好像bash脚本的RUN命令上存在某种超时一样。

有人知道这样的超时吗?我使用脚本的原因是2倍:

  1. 在我的dockerfile中列出200个模块会使整体大小膨胀/使其总体维护工作有些困难。

  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

我将脚本修剪了一点,但您应该会看到一般流程。

0 个答案:

没有答案