From 7cb8a83bbae2647dcee1bc810496070a47bc432a Mon Sep 17 00:00:00 2001 From: zema1 Date: Fri, 1 Dec 2017 19:03:30 +0800 Subject: [PATCH] add oj-backend health check --- Dockerfile | 3 +++ deploy/health_check.py | 11 +++++++++++ 2 files changed, 14 insertions(+) create mode 100644 deploy/health_check.py diff --git a/Dockerfile b/Dockerfile index 9e3f69c..61950c0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,8 @@ ENV OJ_ENV production ADD . /app WORKDIR /app +HEALTHCHECK --interval=5s --retries=3 CMD python2 /app/deploy/health_check.py + RUN printf "https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.6/community/\nhttps://mirrors.tuna.tsinghua.edu.cn/alpine/v3.6/main/" > /etc/apk/repositories && \ apk add --update --no-cache build-base nginx openssl curl unzip supervisor jpeg-dev zlib-dev postgresql-dev freetype-dev && \ pip install --no-cache-dir -r /app/deploy/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple && \ @@ -12,4 +14,5 @@ RUN printf "https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.6/community/\nhttps:/ RUN curl -L $(curl -s https://api.github.com/repos/QingdaoU/OnlineJudgeFE/releases/latest | grep /dist.zip | cut -d '"' -f 4) -o dist.zip && \ unzip dist.zip && \ rm dist.zip + CMD sh /app/deploy/run.sh diff --git a/deploy/health_check.py b/deploy/health_check.py new file mode 100644 index 0000000..a12e615 --- /dev/null +++ b/deploy/health_check.py @@ -0,0 +1,11 @@ +import xmlrpclib + +if __name__ == "__main__": + try: + server = xmlrpclib.Server('http://localhost:9005/RPC2') + info = server.supervisor.getAllProcessInfo() + error_states = list(filter(lambda x: x["state"] != 20, info)) + exit(len(error_states)) + except Exception as e: + print(e.with_traceback()) + exit(1)