自动检测当前路径下所有Dockerfile并打包脚本
本脚本为shell脚本,使用与微服务的批量打包,为了方便运维批量打包docker镜像,估写了这份脚本,请大家多多指教。复制即可用;
注意,此脚本只适用于每个项目都有Dockerfile文件的前提下使用
#!/bin/bash
dirs=`ls`
# 获取当前最大版本号
function getMaxVersion(){
num=$#
i=0
maxV="V1.0"
for item in $@
do
m=($i % 2)
if (( ($i % 2) == 1 ));then
if [[ $item > $maxV ]];then
maxV=$item
fi
fi
((i++))
done
}
#开始编译
function dockerBuild()
{
p1=`docker images|grep $1|awk -F ' ' '{print $1,$2}'`
p2=`echo $p1|cut -d " " -f1`
vs=`echo $p1|cut -d " " -f2`
getMaxVersion $p1
vs=$maxV
vn=${vs#*V}
nvn=$(echo "scale=1;$vn+0.1"|bc)
echo "updating to" $p2":"$nvn
docker build -t $p2":V"$nvn .
echo "---------END"
}
#自动向下寻找Dockerfile,找到则开始打包
function checkfile()
{
path=`pwd`
for dir in $@
do
echo ${dir}
if [ -d "${dir}" ];then
cd ${dir}
if [ -f "./Dockerfile" ];then
echo "---------BEGIN----------"
dockerBuild ${dir}
else
checkfile `ls`
# path=`pwd`
fi
cd ..
else
if [ -f "./Dockerfile" ];then
echo "---------BEGIN----------"
dockerBuild ${dir}
fi
fi
done
}
checkfile ${dirs}