diff --git a/Dockerfile b/Dockerfile index 39e85bf02..ccfe4bc7c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,11 +34,14 @@ RUN apt-get update \ && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ && groupmod -g 1000 users \ && useradd -u 911 -U -d /config -s /bin/false abc \ - && usermod -G users abc + && usermod -G users abc \ ADD openvpn/ /etc/openvpn/ ADD transmission/ /etc/transmission/ ADD tinyproxy /opt/tinyproxy/ +ADD scripts /etc/scripts/ + +RUN chmod a+x /etc/scripts/healthcheck.sh ENV OPENVPN_USERNAME=**None** \ OPENVPN_PASSWORD=**None** \ @@ -129,7 +132,10 @@ ENV OPENVPN_USERNAME=**None** \ TRANSMISSION_WEB_HOME= \ DROP_DEFAULT_ROUTE= \ WEBPROXY_ENABLED=false \ - WEBPROXY_PORT=8888 + WEBPROXY_PORT=8888 \ + HEALTH_CHECK_HOST=google.com + +HEALTHCHECK --interval=5m CMD /etc/scripts/healthcheck.sh # Expose port and run EXPOSE 9091 diff --git a/scripts/healthcheck.sh b/scripts/healthcheck.sh new file mode 100755 index 000000000..dc669e277 --- /dev/null +++ b/scripts/healthcheck.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# Ping uses both exit codes 1 and 2. Exit code 2 cannot be used for docker health checks, +# therefore we use this script to catch error code 2 +HOST=$HEALTH_CHECK_HOST + +if [ -z "$HOST" ] +then + echo "Host not set! Set env 'HEATH_CHECK_HOST'. For now, using default google.com" + HOST="google.com" +fi + +ping -c 1 $HOST +STATUS=$? +if [ $STATUS -ne 0 ] +then + echo "Network is down" + exit 1 +fi + +echo "Network is up" +exit 0 +