diff --git a/Dockerfile b/Dockerfile index 2735402..12d7721 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive # hadolint ignore=DL3008,DL3028,DL4006 RUN apt-get update && \ apt-get -y --no-install-recommends install \ - python3-pip && \ + python3-pip curl && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/* @@ -20,6 +20,8 @@ RUN pip install --no-cache-dir -r requirements.txt EXPOSE 5000 +HEALTHCHECK --interval=5s --timeout=3s \ + CMD curl -f http://localhost:5000/health || exit 1 #CMD [ "python3", "-m" , "flask", "run", "--port", "5000", "--host", "0.0.0.0"] CMD [ "python3", "-m" , "gunicorn", "app:app", "-c", "gunicorn_config.py"] diff --git a/README.md b/README.md index 55d4edf..ec6fac3 100644 --- a/README.md +++ b/README.md @@ -88,3 +88,17 @@ curl -X DELETE -H "token: myuploadtoken" http://docker10.host.lan:5040/delete/fi "success": "File 'file' successfully deleted" } ``` + +### /health + +#### input + +```bash +curl -H "token: myuploadtoken" http://docker10.host.lan:5040/health +``` + +#### output + +```bash +OK +``` diff --git a/app.py b/app.py index e8e7c6c..cb1cf9d 100644 --- a/app.py +++ b/app.py @@ -15,6 +15,10 @@ AUTH_TOKEN = os.environ.get('AUTH_TOKEN', 'myuploadtoken') def is_valid_filename(filename): return bool(re.match(VALID_FILENAME_REGEX, filename)) +@app.route('/health', methods=['GET']) +def health_check(): + return 'OK' + @app.route('/upload', methods=['POST']) def upload_file(): if 'file' not in request.files: