123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #!/bin/bash
- set -eu
- echo ${*} >> /home/app/weichi-crm-server/logs/run.log
- if [ "${#}" -ne 9 ]; then
- echo "脚本参数不合法,程序终止!"
- exit
- fi
- CURRENT_TIME=`date +"%Y-%m-%d %H:%M:%S"`
- DOCKER_REGISTRY_AUTH_CMD=${1}
- PROJECT_SERVICE_LOG_HOME=${2}
- current_app_name=${3}
- app_docker_image_name=${4}
- app_docker_image_tag=${5}
- app_docker_image=${6}
- ETH_VALUE=${7}
- current_app_port=${8}
- JAVA_OPTS=${9}
- INET_IP=`ifconfig ${ETH_VALUE} | grep inet | grep -v inet6 | awk '{print $2}'`
- function init() {
-
- ${DOCKER_REGISTRY_AUTH_CMD}
-
- mkdir -p ${PROJECT_SERVICE_LOG_HOME}
- cd ${PROJECT_SERVICE_LOG_HOME}
- touch ${current_app_name}.log
- }
- init
- function Listening {
- TCPListeningnum=`netstat -an | grep ":$1 " | awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l`
- UDPListeningnum=`netstat -an | grep ":$1 " | awk '$1 == "udp" && $NF == "0.0.0.0:*" {print $0}' | wc -l`
- (( Listeningnum = TCPListeningnum + UDPListeningnum ))
- if [ $Listeningnum == 0 ]; then
- echo "0"
- else
- echo "1"
- fi
- }
- function get_random_port {
-
- random_port=0
- temp_num=0
- while [ ${random_port} == 0 ]; do
-
- temp_num=`shuf -i ${1}-${2} -n1`
-
- if [ `Listening ${temp_num}` == 0 ] ; then
- random_port=${temp_num}
- fi
- done
- echo "${random_port}"
- }
- SENTINEL_PORT=`get_random_port 30100 30200`
- echo "${CURRENT_TIME} sentinel随机端口号: ${SENTINEL_PORT}" >> ${PROJECT_SERVICE_LOG_HOME}/run.log
- function run() {
-
- docker ps -a | grep ${app_docker_image_name} | grep ${app_docker_image_tag} | awk '{print $1}' | xargs -i docker stop {} | xargs -i docker rm {}
-
- docker images | grep -E ${app_docker_image_name} | grep ${app_docker_image_tag}| awk '{print $3}' | uniq | xargs -I {} docker rmi --force {}
-
- docker pull ${app_docker_image}
-
- echo "****** ${CURRENT_TIME} docker run -d -p ${current_app_port}:${current_app_port} -p ${SENTINEL_PORT}:${SENTINEL_PORT} \
- -e JAVA_OPTS="${JAVA_OPTS} -Dspring.cloud.nacos.discovery.ip=${INET_IP} \
- -Dspring.cloud.sentinel.transport.client-ip=${INET_IP} -Dspring.cloud.sentinel.transport.port=${SENTINEL_PORT}" \
- -v ${PROJECT_SERVICE_LOG_HOME}/${current_app_name}.log:/home/${current_app_name}.log \
- --name ${current_app_name} ${app_docker_image}" >> ${PROJECT_SERVICE_LOG_HOME}/run.log
-
- docker run -d -p ${current_app_port}:${current_app_port} -p ${SENTINEL_PORT}:${SENTINEL_PORT} \
- -e JAVA_OPTS="${JAVA_OPTS} -Dspring.cloud.nacos.discovery.ip=${INET_IP} \
- -Dspring.cloud.sentinel.transport.client-ip=${INET_IP} -Dspring.cloud.sentinel.transport.port=${SENTINEL_PORT}" \
- -v ${PROJECT_SERVICE_LOG_HOME}/${current_app_name}.log:/home/${current_app_name}.log \
- --name ${current_app_name} ${app_docker_image}
- }
- run
|