linux-tutorial/codes/linux/soft/lib/docker.sh
2020-04-03 15:15:02 +08:00

80 lines
2.1 KiB
Bash

#!/usr/bin/env bash
LINUX_SCRIPTS_LIB_DIR=`dirname ${BASH_SOURCE[0]}`
source ${LINUX_SCRIPTS_LIB_DIR}/utils.sh
dockerBuild() {
if [[ ! $1 ]] || [[ ! $2 ]] || [[ ! $3 ]]; then
logError "you must input following params in order:"
echo -e "${ENV_COLOR_B_RED}"
echo " (1) source"
echo " (2) repository"
echo " (3) tag"
echo -e "\nEg. dockerBuild /home/workspace tdh60dev01:5000/fide/fide-processor fide-0.0.6-SNAPSHOT"
echo -e "${ENV_COLOR_RESET}"
return ${ENV_FAILED}
fi
local source=$1
local repository=$2
local tag=$3
dockerCheck ${source}
if [[ "${ENV_SUCCEED}" != "$?" ]]; then
return ${ENV_FAILED}
fi
cd ${source}
callAndLog docker build -t ${repository}:${tag} .
if [[ "${ENV_SUCCEED}" != "$?" ]]; then
logError "docker build -t ${repository}:${tag} failed"
return ${ENV_FAILED}
fi
cd -
}
dockerPush() {
if [[ ! $1 ]] || [[ ! $2 ]]; then
logError "you must input following params in order:"
echo -e "${ENV_COLOR_B_RED}"
echo " (1) repository"
echo " (2) tag"
echo -e "\nEg. dockerBuild tdh60dev01:5000/fide/fide-processor fide-0.0.6-SNAPSHOT"
echo -e "${ENV_COLOR_RESET}"
return ${ENV_FAILED}
fi
local repository=$1
local tag=$2
local dockerHashId=$(docker image ls | grep ${repository} | grep ${tag} | awk '{print $3}')
if [[ ! ${dockerHashId} ]]; then
logInfo "try to delete existed image: ${repository}:${tag}"
callAndLog docker rmi ${dockerHashId}
fi
logInfo "try to push new image: ${repository}:${tag}"
callAndLog docker push ${repository}:${tag}
}
# check Dockerfile
# @param $1: project path
dockerCheck() {
local source=$1
if [[ -d "${source}" ]]; then
cd ${source}
if [[ -f "${source}/Dockerfile" ]]; then
return ${ENV_YES}
else
logError "Dockerfile is not exists"
return ${ENV_NO}
fi
cd -
return ${ENV_YES}
else
logError "${source} is not valid docker project"
return ${ENV_NO}
fi
}