Docker: a push when a container dies
July 14, 2026 · 4 min read
Containers restart quietly, crash-loop quietly, disappear quietly. A ten-line watcher on the Docker events stream makes every death ring your phone – with the container name in the notification.
The watcher
#!/bin/bash
docker events --filter event=die --format '{{.Actor.Attributes.name}} ({{.Actor.Attributes.exitCode}})' \
| while read line; do
curl -s -X POST "$WEBHOOKY_URL" -H "Content-Type: application/json" \
-d "{\"title\":\"🐳 Container died\",\"message\":\"$line\",\"sound\":\"error_1\"}" > /dev/null
done
Run it as a systemd service (or as a tiny container with the Docker socket mounted) and every non-zero exit rings your phone. Filter further with --filter container=… if only some containers matter, or check the exit code in the loop to ignore clean stops.
As a systemd unit
[Unit]
Description=Docker death notifier
After=docker.service
[Service]
Environment=WEBHOOKY_URL=https://api.webhooky.app/YOUR_KEY
ExecStart=/usr/local/bin/docker-notify.sh
Restart=always
[Install]
WantedBy=multi-user.target
Watchtower updates via shoutrrr
If Watchtower keeps your images fresh, it can report through shoutrrr's generic webhook provider:
WATCHTOWER_NOTIFICATION_URL=generic+https://api.webhooky.app/YOUR_KEY?template=json&titlekey=title&messagekey=message
Now image updates land as tidy pushes too – use a friendly sound for those and keep the alarm for deaths.
Compose healthchecks
Pair this with proper healthcheck: blocks in your compose files: an unhealthy container gets restarted by Docker, the restart shows up as a die event, and you learn about flapping services before your users do.
Get Webhooky
Free for your first 100 notifications – set up your endpoint in two minutes.