我有一个Docker文件,可为大型Perl项目构建映像。该dockerfile的最后一行运行一个脚本,该脚本执行约200个模块的cpan安装。除了经过一段时间后,模块停止安装,然后docker进入下一步,这一切似乎一切正常。就好像bash脚本的RUN命令上存在某种超时一样。
有人知道这样的超时吗?我使用脚本的原因是2倍:
在我的dockerfile中列出200个模块会使整体大小膨胀/使其总体维护工作有些困难。
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
我将脚本修剪了一点,但您应该会看到一般流程。