Dockerfile:

RUN data="" \
&& for s in $(wget -qO- http://mirrors.aliyun.com/alpine/MIRRORS.txt); do t=$(time -f "%E" wget -T1 -q $s/MIRRORS.txt -O /dev/null 2>&1) && echo "$s was $t" && data="$data$t $s\n"; done \
&& echo -e $data | sort \
&& newrepo=`echo -e $data | sort | head -2 | tail -1 | awk '{print $3}'` \
&& repo=${newrepo//\//\\/} \
&& sed -i 's/http:\/\/dl-cdn.alpinelinux.org\/alpine\//'"$repo"'/g' /etc/apk/repositories

shell,其实就是上面run里的内容了

data=""
for s in $(wget -qO- http://mirrors.aliyun.com/alpine/MIRRORS.txt); 
do 
t=$(time -f "%E" wget -T1 -q $s/MIRRORS.txt -O /dev/null 2>&1) 
echo "$s was $t" && data="$data$t $s\n" 
done
echo -e $data | sort
newrepo=`echo -e $data | sort | head -2 | tail -1 | awk '{print $3}'`
repo=${newrepo//\//\\/}
sed -i 's/http:\/\/dl-cdn.alpinelinux.org\/alpine\//'"$repo"'/g' /etc/apk/repositories

shell没学过,边百度边写的,比较烂请轻喷,有更快速的写法请留言指出,谢谢~

wget设置了1秒超时,如果服务器本身网络比较卡,可以调大几秒

搜索最快mirror代码来源:

https://wiki.alpinelinux.org/wiki/Finding\_the\_fastest\_mirror