#!/usr/local/bin/node // nodejs-slim container healthcheck (where there is no curl, only node) // // Usage: // ./healthcheck.js url [expectedStatusCode:200] // // Example in docker compose expecting http://localhost:9999 to respond with a 401: // ``` // healthcheck: // test: ./healthcheck.js http://localhost:9999 // ``` const DEFAULT_STATUS_CODE = 200; (async () => { const url = process.argv?.[2]; if (!url) { console.error("url parameter not specified") process.exit(1) } const expectedStatusCode = process.argv?.[3] || DEFAULT_STATUS_CODE; // check expected vs actual status code const response = await fetch(url); if (parseInt(expectedStatusCode) !== response.status) { console.error(`expected status code ${expectedStatusCode} but received actual ${response.status}`) process.exit(1); } })();