UNPKG

4.99 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const NodeServicesManager_1 = require("./../Node/NodeServicesManager");
4const http = require("http");
5const fs = require("fs-extra");
6const log_formatter_1 = require("log-formatter");
7/**
8 * NodeServicesManager的基础上添加的功docker进行健康检查的服务器。
9 * 服务器监听在 /tmp/service_starter_health_checking.sock
10 *
11 * @export
12 * @class DockerServicesManager
13 * @extends {NodeServicesManager}
14 */
15class DockerServicesManager extends NodeServicesManager_1.NodeServicesManager {
16 constructor(_config = {}) {
17 super(_config);
18 if (_config.startHealthChecking !== false && process.platform === 'linux') { //配置健康检查服务
19 //要被监听的端口
20 const port = "/tmp/service_starter_health_checking.sock";
21 //删除之前的端口,避免被占用
22 fs.removeSync(port);
23 //创建服务器
24 const server = http.createServer(async (req, res) => {
25 const result = await this.healthCheck();
26 res.end(result.description);
27 });
28 server.once('error', err => {
29 log_formatter_1.default.error
30 .location.white
31 .title.red
32 .content.red(this.name, '健康检查服务器出现异常:', err);
33 });
34 server.listen(port);
35 }
36 }
37}
38exports.DockerServicesManager = DockerServicesManager;
39
40//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRvY2tlci9Eb2NrZXJTZXJ2aWNlc01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx1RUFBb0U7QUFDcEUsNkJBQThCO0FBQzlCLCtCQUFnQztBQUNoQyxpREFBZ0M7QUFHaEM7Ozs7Ozs7R0FPRztBQUNILE1BQWEscUJBQXNCLFNBQVEseUNBQW1CO0lBQzFELFlBQVksVUFBdUMsRUFBRTtRQUNqRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsRUFBRSxVQUFVO1lBQ25GLFNBQVM7WUFDVCxNQUFNLElBQUksR0FBRywyQ0FBMkMsQ0FBQztZQUV6RCxlQUFlO1lBQ2YsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVwQixPQUFPO1lBQ1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDeEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDdkIsdUJBQUcsQ0FBQyxLQUFLO3FCQUNKLFFBQVEsQ0FBQyxLQUFLO3FCQUNkLEtBQUssQ0FBQyxHQUFHO3FCQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztDQUNKO0FBM0JELHNEQTJCQyIsImZpbGUiOiJEb2NrZXIvRG9ja2VyU2VydmljZXNNYW5hZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9ja2VyU2VydmljZXNNYW5hZ2VyQ29uZmlnIH0gZnJvbSAnLi9Eb2NrZXJTZXJ2aWNlc01hbmFnZXJDb25maWcnO1xyXG5pbXBvcnQgeyBOb2RlU2VydmljZXNNYW5hZ2VyIH0gZnJvbSAnLi8uLi9Ob2RlL05vZGVTZXJ2aWNlc01hbmFnZXInO1xyXG5pbXBvcnQgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcclxuaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMtZXh0cmEnKTtcclxuaW1wb3J0IGxvZyBmcm9tICdsb2ctZm9ybWF0dGVyJztcclxuXHJcblxyXG4vKipcclxuICogTm9kZVNlcnZpY2VzTWFuYWdlcueahOWfuuehgOS4iua3u+WKoOeahOWKn2RvY2tlcui/m+ihjOWBpeW6t+ajgOafpeeahOacjeWKoeWZqOOAgiAgICBcclxuICog5pyN5Yqh5Zmo55uR5ZCs5ZyoIC90bXAvc2VydmljZV9zdGFydGVyX2hlYWx0aF9jaGVja2luZy5zb2NrXHJcbiAqIFxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBEb2NrZXJTZXJ2aWNlc01hbmFnZXJcclxuICogQGV4dGVuZHMge05vZGVTZXJ2aWNlc01hbmFnZXJ9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRG9ja2VyU2VydmljZXNNYW5hZ2VyIGV4dGVuZHMgTm9kZVNlcnZpY2VzTWFuYWdlciB7XHJcbiAgICBjb25zdHJ1Y3RvcihfY29uZmlnOiBEb2NrZXJTZXJ2aWNlc01hbmFnZXJDb25maWcgPSB7fSkge1xyXG4gICAgICAgIHN1cGVyKF9jb25maWcpO1xyXG5cclxuICAgICAgICBpZiAoX2NvbmZpZy5zdGFydEhlYWx0aENoZWNraW5nICE9PSBmYWxzZSAmJiBwcm9jZXNzLnBsYXRmb3JtID09PSAnbGludXgnKSB7IC8v6YWN572u5YGl5bq35qOA5p+l5pyN5YqhXHJcbiAgICAgICAgICAgIC8v6KaB6KKr55uR5ZCs55qE56uv5Y+jXHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSBcIi90bXAvc2VydmljZV9zdGFydGVyX2hlYWx0aF9jaGVja2luZy5zb2NrXCI7XHJcblxyXG4gICAgICAgICAgICAvL+WIoOmZpOS5i+WJjeeahOerr+WPo++8jOmBv+WFjeiiq+WNoOeUqFxyXG4gICAgICAgICAgICBmcy5yZW1vdmVTeW5jKHBvcnQpO1xyXG5cclxuICAgICAgICAgICAgLy/liJvlu7rmnI3liqHlmahcclxuICAgICAgICAgICAgY29uc3Qgc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmhlYWx0aENoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICByZXMuZW5kKHJlc3VsdC5kZXNjcmlwdGlvbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc2VydmVyLm9uY2UoJ2Vycm9yJywgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGxvZy5lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIC5sb2NhdGlvbi53aGl0ZVxyXG4gICAgICAgICAgICAgICAgICAgIC50aXRsZS5yZWRcclxuICAgICAgICAgICAgICAgICAgICAuY29udGVudC5yZWQodGhpcy5uYW1lLCAn5YGl5bq35qOA5p+l5pyN5Yqh5Zmo5Ye6546w5byC5bi477yaJywgZXJyKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBzZXJ2ZXIubGlzdGVuKHBvcnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==