-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
60 lines (46 loc) · 1.16 KB
/
index.js
File metadata and controls
60 lines (46 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const express = require('express');
const { version } = require('./package.json');
const app = express();
const port = Number(process.env.PORT || 3000);
let isReady = true;
let server;
app.get('/', (_req, res) => {
res.status(200).json({
ok: true,
service: 'deployment-test-app',
timestamp: new Date().toISOString()
});
});
app.get('/health', (_req, res) => {
res.status(200).json({ ok: true });
});
app.get('/version', (_req, res) => {
const commit = process.env.APP_COMMIT_SHA || null;
res.status(200).json({ version, commit });
});
app.get('/ready', (_req, res) => {
if (!isReady) {
return res.status(503).json({ ok: false, reason: 'shutting_down' });
}
return res.status(200).json({ ok: true });
});
app.get('/live', (_req, res) => {
res.status(200).json({ ok: true });
});
server = app.listen(port, '0.0.0.0', () => {
process.stdout.write(`Listening on ${port}\n`);
});
const shutdown = () => {
isReady = false;
if (!server) {
process.exit(0);
}
server.close(() => {
process.exit(0);
});
setTimeout(() => {
process.exit(1);
}, 10000).unref();
};
process.on('SIGTERM', shutdown);
process.on('SIGINT', shutdown);