1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const NodeServicesManager_1 = require("./../Node/NodeServicesManager");
|
4 | const http = require("http");
|
5 | const fs = require("fs-extra");
|
6 | const 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 | */
|
15 | class 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 | }
|
38 | exports.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==
|