added to nginx the option to verify hostnames changes in ip. nginx open source doesn't resolve upstream servers after start

This commit is contained in:
2021-04-01 01:45:25 +02:00
parent fee54d9bcc
commit 8df5d984e0
2 changed files with 52 additions and 2 deletions

View File

@@ -1,7 +1,7 @@
FROM centos:7
COPY repo /etc/yum.repos.d/Nginx.repo
RUN yum update -y
RUN yum install -y nginx \
RUN yum install -y nginx bind-utils\
&& yum clean all
COPY docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh

View File

@@ -31,8 +31,58 @@ else
fi
if [[ (! -z "${HOSTNAMESTOCHECK}" ) ]]; then
"$@" -c "/etc/nginx/nginx_tmp.conf" -g "daemon off;" &
declare -A HOSTNAMESIP
IFS="," read -a HOSTNAMESTOCHECKARRAY <<< "${HOSTNAMESTOCHECK}"
for HOST in "${HOSTNAMESTOCHECKARRAY[@]}"
do
HOSTIP=`dig +short $HOST`
HOSTIP=`echo "$HOSTIP" | tr ' ' '\n' | sort | tr '\n' ' '`
HOSTNAMESIP[$HOST]=$HOSTIP
echo IP FOR $HOST $HOSTIP
done
sleep 10
while true
do
IPCHANGED=0
for HOST in "${HOSTNAMESTOCHECKARRAY[@]}"
do
NEWHOSTIP=`dig +short $HOST`
NEWHOSTIP=`echo "$NEWHOSTIP" | tr ' ' '\n' | sort | tr '\n' ' '`
OLDHOSTIP=${HOSTNAMESIP[$HOST]}
if [ "$NEWHOSTIP" != "$OLDHOSTIP" ]; then
if [ "$IPCHANGED" = 0 ]; then
IPCHANGED=1
fi
HOSTNAMESIP[$HOST]=$NEWHOSTIP
echo NEW IP FOR $HOST $NEWHOSTIP
fi
done
if [ "$IPCHANGED" = 1 ]; then
if [[ `ps -acx|grep nginx|wc -l` > 0 ]]; then
echo "RELOADING NGINX"
nginx -s reload
else
echo "RESTARTING NGINX"
"$@" -c "/etc/nginx/nginx_tmp.conf" -g "daemon off;" &
fi
fi
sleep 10
done
else
"$@" -c "/etc/nginx/nginx_tmp.conf" -g "daemon off;"
fi