Here’s the shape, if it saves you the fiddling. Put it in the compose file rather than a cron:
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:3000/api/v1/trending >/dev/null || exit 1"]
interval: 5m
timeout: 10s
retries: 3
restart: unless-stopped
Port and path to match your setup, and use wget rather than curl unless you know the image ships curl, since a healthcheck that fails because the binary is missing looks exactly like a service that is down.
One catch: Docker marks a container unhealthy but won’t restart it for you. Either pair it with something like autoheal, which watches for that state, or keep your cron and have it check first and restart only on failure.
Either way you get the thing the blind hourly restart can’t give you: a log of how often it actually fired. Never, and you didn’t need the restarts. Constantly, and there’s a real bug worth chasing rather than a schedule papering over it.




Sorry for the seven weeks. We’re buried in development, and when the day runs out the code gets finished before the forums do. Honest reason, not a good one.
You were right, and it’s fixed now. The app named 16 components under Settings while the binaries actually link 60, and full licence texts travelled with only four of them. For MIT and BSD-3-Clause that isn’t enough: the copyright line and the text have to accompany the binary.
The list is generated from what the compiler links rather than kept by hand, across every platform we build for, and it carries the full text of every licence. It ships inside the macOS bundle, next to the Windows executable, at /usr/share/doc/deviceshelf/NOTICES in the .deb, .rpm and Docker image, and it goes up at deviceshelf.app/notices.txt with the next release. A build check refuses to release if a dependency was added without its notice.
Thanks for pushing on it.