diff --git a/nginx/Dockerfile b/nginx/Dockerfile index 4a332d7..00b2628 100644 --- a/nginx/Dockerfile +++ b/nginx/Dockerfile @@ -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 diff --git a/nginx/docker-entrypoint.sh b/nginx/docker-entrypoint.sh index ba6ac30..ab3aa79 100644 --- a/nginx/docker-entrypoint.sh +++ b/nginx/docker-entrypoint.sh @@ -30,8 +30,58 @@ else sed -i "1s/^/user nginx;\n/" /etc/nginx/nginx_tmp.conf 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 -"$@" -c "/etc/nginx/nginx_tmp.conf" -g "daemon off;" + 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 + + +