docker_healthcheck.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const http = require("http");
  2. const ini = require("ini");
  3. const fs = require("fs");
  4. const dataDir = require('./src/services/data_dir.js');
  5. const config = ini.parse(fs.readFileSync(dataDir.CONFIG_INI_PATH, 'utf-8'));
  6. if (config.Network.https) {
  7. // built-in TLS (terminated by trilium) is not supported yet, PRs are welcome
  8. // for reverse proxy terminated TLS this will works since config.https will be false
  9. process.exit(0);
  10. }
  11. const port = require('./src/services/port.js');
  12. const host = require('./src/services/host.js');
  13. const options = { timeout: 2000 };
  14. const callback = res => {
  15. console.log(`STATUS: ${res.statusCode}`);
  16. if (res.statusCode === 200) {
  17. process.exit(0);
  18. } else {
  19. process.exit(1);
  20. }
  21. };
  22. let request;
  23. if (port !== 0) { // TCP socket.
  24. const url = `http://${host}:${port}/api/health-check`;
  25. request = http.request(url, options, callback);
  26. } else { // Unix socket.
  27. options.socketPath = host;
  28. options.path = '/api/health-check';
  29. request = http.request(options, callback);
  30. }
  31. request.on("error", err => {
  32. console.log("ERROR");
  33. process.exit(1);
  34. });
  35. request.end();