Procházet zdrojové kódy

Modify healthcheck, remove sed and awk from entrypoint

Vadim Surkov před 6 roky
rodič
revize
84c8771a57
3 změnil soubory, kde provedl 29 přidání a 12 odebrání
  1. 3 2
      Dockerfile
  2. 16 10
      docker-entrypoint.sh
  3. 10 0
      healthcheck.sh

+ 3 - 2
Dockerfile

@@ -1,13 +1,14 @@
 FROM registry.sdsys.ru/iru/iru-base:0.1
 ENTRYPOINT ["docker-entrypoint.sh"]
-COPY docker-entrypoint.sh /usr/share/web-registry-portal/bin/docker-entrypoint.sh
+COPY docker-entrypoint.sh healthcheck.sh /usr/share/web-registry-portal/bin/
 ENV PATH=/usr/share/web-registry-portal/bin:$PATH LANG="en_US.UTF-8" ADMIN_HOST=admin
 EXPOSE 9000 2551
-HEALTHCHECK --start-period=30s --interval=15s --timeout=5s --retries=2 CMD curl -f -H 'Host:demo.infoclinica.ru' 127.0.0.1:9000/login || exit 1
+HEALTHCHECK --start-period=30s --interval=15s --timeout=5s --retries=2 CMD healthcheck.sh
 ARG repo=prod
 RUN set -x \           
            && curl https://repo.infoclinica.ru/yum/centos/sds-${repo}-portal.repo -o /etc/yum.repos.d/sds-${repo}-portal.repo \
            && chmod +x /usr/share/web-registry-portal/bin/docker-entrypoint.sh \
+           && chmod +x /usr/share/web-registry-portal/bin/healthcheck.sh \
            && yum update ca-certificates.noarch -y \
            && yum install web-registry-portal -y \
            && yum clean all 

+ 16 - 10
docker-entrypoint.sh

@@ -1,18 +1,23 @@
 #!/usr/bin/env bash
 
-if [ "$DB_CLUSTER" ]; then
-   sed -i 's/"mongo41\.infoclinica\.lan:27017,mongo42\.infoclinica\.lan:27017,mongo43\.infoclinica\.lan:27017"/\$\{DB_CLUSTER\}/' /etc/web-registry-portal/application.conf
-   sed -i 's/"dev-mongo\.infoclinica\.lan:27017"/\$\{DB_CLUSTER\}/' /etc/web-registry-portal/application.conf
-fi
+if [ ! -z "${APPNET}" ]; then
+   echo "Initial nslookup ${HOSTNAME}.${APPNET}"
+   nslookup ${HOSTNAME}.${APPNET}
+   while [ $? -ne 0 ]; do
+     echo "Waiting for ${HOSTNAME}.${APPNET} to become available"
+     sleep 1
+     nslookup ${HOSTNAME}.${APPNET}
+   done
 
-if [ "$ADMIN_HOST" ]; then
-   sed -i "s/192\.168\.204\.12/$ADMIN_HOST/" /etc/web-registry-portal/application.conf
-   sed -i "s/192\.168\.201\.11/$ADMIN_HOST/" /etc/web-registry-portal/application.conf
+   echo "Initial nslookup ${ADMIN_HOST}.${APPNET}"
+   nslookup ${ADMIN_HOST}.${APPNET}
+   while [ $? -ne 0 ]; do
+     echo "Waiting for ${ADMIN_HOST}.${APPNET} to become available"
+     sleep 1
+     nslookup ${ADMIN_HOST}.${APPNET}
+   done
 fi
 
-sed -i "s/192\.168\.204\.2x/${HOSTNAME}/" /etc/web-registry-portal/application.conf
-sed -i "s/communication = \"remote\"/communication = \"socket\"/" /etc/web-registry-portal/application.conf
-
 echo "#Dummy" >> /etc/rc.d/init.d/functions
 source /etc/init.d/web-registry-portal status
 
@@ -22,3 +27,4 @@ then
 else
     exec ${WEB_REGISTRY_BIN} ${WEB_REGISTRY_CUSTOM_OPTS} ${WEB_REGISTRY_OPTS}
 fi
+

+ 10 - 0
healthcheck.sh

@@ -0,0 +1,10 @@
+#!/bin/bash
+
+containerstart=`stat -c %Z /proc/1`
+curtime=`date +%s`
+if [[ $(($containerstart-$curtime)) -le "180" ]]; then
+    echo "0"
+    exit 0
+fi
+
+curl -f -H 'Host:demo.infoclinica.ru' 127.0.0.1:9000/login || exit 1