#!/bin/bash TestEnv() { Check=$(which $1 2> /dev/null) if [[ -z ${Check} ]] then echo "$1 not found ... " exit 1 fi } Res() { if [[ $1 -eq 0 ]] then echo "$(tput setaf 2)OK$(tput sgr0)" else echo "$(tput setaf 1)FAILED$(tput sgr0)" fi } LinkESL() { while [[ ! -d ${DirLink} ]] do read -p "Absolute path of ESL Programe or ESL Product : " DirLink done [[ -L $(dirname $0)/cible ]] && rm -f $(dirname $0)/cible &> /dev/null echo -n "ESL symbolic link : " ln -s ${DirLink} $(dirname $0)/cible &> /dev/null && echo OK || echo FAILED } help () { echo " $0 [image-gen/image-repo/link/repo/gen/run-repo/run-gen/import-image/save-image] * $(tput setaf 3)image-gen $(tput sgr0): Generate docker image for esl compilator * $(tput setaf 3)image-repo $(tput sgr0): Generate docker image for repository sync * $(tput setaf 5)link $(tput sgr0): Create symbolic link to ESL Programe or Porduct * $(tput setaf 4)repo $(tput sgr0): start docker compose and generate repositories * $(tput setaf 4)gen $(tput sgr0): start docker compose and generarte esl * $(tput setaf 2)run-gen $(tput sgr0): Connect and run bash on instance gen * $(tput setaf 2)run-repo $(tput sgr0): Connect and run bash on instance repo * $(tput setaf 6)import-image $(tput sgr0): Import last backuped docker image in ./images/ * $(tput setaf 6)save-image $(tput sgr0): backup docker image in ./images/ " exit } DeleteFile() { echo -n "Delete Dockerfile ... : " [[ -f ${Wai}/Dockerfile ]] && rm Dockerfile || true Res $? } DockerConnect() { User=esl [[ "$2" == "root" ]] && User='root' Inst=$(docker ps|grep "esl-$1" | awk '{print $NF}') [[ -L $(realpath $(dirname $0))/cible ]] && Cible="-v $(realpath $(dirname $0))/cible:/data/cible" [[ -z "${Inst}" ]] && docker run -ti -v $(realpath $(dirname $0))/data:/data -v $(realpath $(dirname $0))/data/log:/log ${Cible} --hostname $1 -u ${User} esl\-${1}:2 bash || docker exec -ti -u $User ${Inst} bash } DockerPs() { docker ps|grep $(dirname .)_esl\-$1 | awk '{print $NF}' } DockerStop() { for DockerRun in $(docker ps|grep esl\- | awk '{print $NF}') do echo -n "Stop $DockerRun ... :" docker stop $DockerRun &> /dev/null Res $? done } DeleteImg () { DeleteFile echo -n "Delte old images $1 ... : " for var in $(docker image ls| grep "esl-$1" | awk '{print $3}'); do yes | docker image rm $var --force; done &> /dev/null Res $? } DockerGen() { DeleteImg $1 echo -n "generate Dockerfile $1 $Cible... : " source define.conf while read line do if [[ ! -z $(echo $line | grep '\$') ]] then eval echo ${line} | sed "s#\[#\[\'#g" | sed "s#\]#\'\]#g" else echo $line fi done < Template/Dockerfile.${1}.${Cible} > Dockerfile Res $? echo -n "Generate $1 Docker image ... : " docker build --no-cache . -t esl-$1:${GenVers} 2>&1 | tee /tmp/BuildDocker-${1}.log &> /dev/null Res $? echo " ------ Log Compil ----------- /tmp/BuildDocker-${1}.log ----------------------------- " } DockerComposeRun () { echo " ------ Log Compil ----------- /tmp/GetRepo-${1}.log ----------------------------- " [[ -f ${Wai}/docker-compose.yml ]] && rm -f ${Wai}/docker-compose.yml [[ "$2" == "Print" ]] && Print="-d" || Print="" cp ${Wai}/Template/docker-compose.yml.$1 ${Wai}/docker-compose.yml echo "Log is : log/${1} - use tail -f ./log/$1" [[ -L $(realpath $(dirname $0))/cible ]] && Cible="-v $(realpath $(dirname $0))/cible:/data/cible" docker run -ti -v $(realpath $(dirname $0))/data:/data -v $(realpath $(dirname $0))/data/log:/tmp/log ${Cible} -u esl --hostname $1 esl\-${1}:2 /usr/local/bin/${1}.sh #yes | docker-compose up ${Print} --remove-orphans 1>&1 | tee /tmp/RunDocker-${1}.log &> /dev/null ##yes | docker-compose up ${Print} --remove-orphans Res $? echo " --------- Log Esl ----------- /tmp/RunDocker-${1}.log ----------------------------- " } DockerSave () { for Image in $(docker image ls | grep -E "^esl-repo|^esl-gen" | awk '{print $1":"$2}') do EslImage=$(echo $Image | cut -d":" -f1) EslImageVersion=$(echo $Image | cut -d":" -f2) echo -ne "Save $Image : " docker save $Image | gzip > $(dirname $0)/images/${EslImageVersion}-$(date +%Y%m%d)_$(echo $Image | sed 's/:/-/g').gz [[ "$?" -eq 0 ]] && echo OK || echo FAILED done } DockerImport () { if [[ $(ls -1 images | grep "esl-"| wc -l) -eq 0 ]] then echo "Nothing todo ..." else for Type in repo gen do GetImage=$(ls -1 images | grep $Type |sort -r -n -t"-" -k1,2 | head -n1) echo -ne "Import $GetImage : " zcat images/$GetImage | docker load &> /dev/null [[ "$?" -eq 0 ]] && echo OK || echo FAILED done fi } #GenAll () { # DockerGen gen # DockerGen repo #}