Docker Healthchecks without curl and wget
I needed to add healthchecks to a container that does not have
curl
and wget
installed.
I found this snippet which uses raw tcp sockets and should work everywhere:
healthcheck: test: [ "CMD-SHELL", "exec 3<>/dev/tcp/127.0.0.1/8080;echo -e \"GET /health HTTP/1.1\r\nhost: http://localhost\r\nConnection: close\r\n\r\n\" >&3;grep \"HTTP/1.1 200 OK\" <&3" ] interval: 10s timeout: 5s retries: 5
This loosely translates to this curl command:
curl -f http://localhost:8080/health || exit 1