diff --git a/docker/Dockerfile b/docker/Dockerfile index 449eb8724..792b1979b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -119,6 +119,7 @@ ENV GIT_COMMIT_HASH=$COMMIT RUN apt-get update \ && apt-get install --no-install-recommends -y \ + curl \ gosu \ iproute2 \ libldap-common \ @@ -141,7 +142,9 @@ ENV APP_PORT=9000 EXPOSE ${APP_PORT} -HEALTHCHECK CMD python -m mealie.scripts.healthcheck || exit 1 +COPY ./docker/healthcheck.sh $MEALIE_HOME/healthcheck.sh +RUN chmod +x $MEALIE_HOME/healthcheck.sh +HEALTHCHECK CMD $MEALIE_HOME/healthcheck.sh ENV HOST 0.0.0.0 diff --git a/docker/healthcheck.sh b/docker/healthcheck.sh new file mode 100755 index 000000000..18d0b24c6 --- /dev/null +++ b/docker/healthcheck.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +PORT="${API_PORT:-9000}" + +if [ -n "$TLS_CERTIFICATE_PATH" ] && [ -n "$TLS_PRIVATE_KEY_PATH" ]; then + PROTO="https" +else + PROTO="http" +fi + +# -k: TLS certificate is likely not issued for 127.0.0.1, so don't verify +curl -fsk "${PROTO}://127.0.0.1:${PORT}/api/app/about" > /dev/null diff --git a/mealie/scripts/healthcheck.py b/mealie/scripts/healthcheck.py deleted file mode 100644 index 40b04c5ca..000000000 --- a/mealie/scripts/healthcheck.py +++ /dev/null @@ -1,30 +0,0 @@ -import os -import sys - -import requests - - -def main(): - port = os.getenv("API_PORT") - - if port is None: - port = 9000 - - if all(os.getenv(x) for x in ["TLS_CERTIFICATE_PATH", "TLS_PRIVATE_KEY_PATH"]): - proto = "https" - else: - proto = "http" - - url = f"{proto}://127.0.0.1:{port}/api/app/about" - - # TLS certificate is likely not issued for 127.0.0.1 so don't verify - r = requests.get(url, verify=False) - - if r.status_code == 200: - sys.exit(0) - else: - sys.exit(1) - - -if __name__ == "__main__": - main()