Merge pull request #640 from Andersbiha/fix-635

Remove health check from dockerfile & document health check endpoint
This commit is contained in:
Philipp C. Heckel 2023-02-27 10:44:29 -05:00 committed by GitHub
commit 87f9f88e32
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 3 deletions

View file

@ -3,7 +3,5 @@ MAINTAINER Philipp C. Heckel <philipp.heckel@gmail.com>
COPY ntfy /usr/bin COPY ntfy /usr/bin
HEALTHCHECK --interval=60s --timeout=10s CMD wget -q --tries=1 http://localhost/v1/health -O - | grep -Eo '"healthy"\s*:\s*true' || exit 1
EXPOSE 80/tcp EXPOSE 80/tcp
ENTRYPOINT ["ntfy"] ENTRYPOINT ["ntfy"]

View file

@ -1067,6 +1067,16 @@ and [here](https://easyengine.io/tutorials/nginx/block-wp-login-php-bruteforce-a
maxretry = 10 maxretry = 10
``` ```
## Health checks
A preliminary health check API endpoint is exposed at `"/v1/health"`. The endpoint returns a `json` response in the format shown below.
If a non-200 HTTP status code is returned or if the returned `health` field is `false` the ntfy service should be considered as unhealthy.
```json
{"health":true}
```
See [Installalation/Docker](install.md#docker) for an example of how this could be used in a `docker-compose` environment.
## Logging & debugging ## Logging & debugging
By default, ntfy logs to the console (stderr), with an `info` log level, and in a human-readable text format. By default, ntfy logs to the console (stderr), with an `info` log level, and in a human-readable text format.

View file

@ -266,7 +266,7 @@ docker run \
serve serve
``` ```
Using docker-compose with non-root user: Using docker-compose with non-root user and healthchecks enabled:
```yaml ```yaml
version: "2.1" version: "2.1"
@ -284,6 +284,12 @@ services:
- /etc/ntfy:/etc/ntfy - /etc/ntfy:/etc/ntfy
ports: ports:
- 80:80 - 80:80
healthcheck: # optional: remember to adapt the host:port to your environment
test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
interval: 60s
timeout: 10s
retries: 3
start_period: 40s
restart: unless-stopped restart: unless-stopped
``` ```