-
Notifications
You must be signed in to change notification settings - Fork 10
/
ecosystem.config.js
335 lines (335 loc) · 8.71 KB
/
ecosystem.config.js
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
module.exports = {
apps: [
{
/** General */
/**
* application name (default to script filename without extension)
*
* @type {string}
* @example “my-api”
*/
name: 'app',
/**
* script path relative to pm2 start
*
* @type {string}
* @example “./api/app.js”
*/
script: './dist/main.js',
/**
* the directory from which your app will be launched
*
* @type {string}
* @example “/var/www/”
*/
// cwd: '',
/**
* containing all arguments passed via CLI to script
*
* @type {string}
* @example “-a 13 -b 12”
*/
// args: '',
/**
* interpreter absolute path (default to node)
*
* @type {string}
* @example "node"
* @example “/usr/bin/python”
*/
// interpreter: 'node',
/**
* option to pass to the interpreter
*
* @type {string | string[]}
* @example “–harmony”
*/
// interpreter_args: '--max-old-space-size=8192',
/**
* alias to interpreter_args
*
* @type {string | string[]}
*/
node_args: ['--nouse-idle-notification', '--expose-gc', '--max-old-space-size=8192', '--stack_size=8192'],
/** Advanced features */
/**
* number of app instance to be launched
*
* @type {number}
* @default 1
* @example -1
*/
instances: 0,
/**
* string “cluster” mode to start your app, can be “cluster” or “fork”, default fork
* @type {"cluster"| "fork"}
* @default "fork"
*/
exec_mode: 'cluster',
/**
* enable watch & restart feature, if a file change in the folder or subfolder, your app will get reloaded
* @type {boolean | boolean[]} - boolean or array of string
* @example true
*/
// watch: true,
/**
* list of regex to ignore some file or folder names by the watch feature
*
* @type {string | string[]}
*/
// ignore_watch: [],
/**
* your app will be restarted if it exceeds the amount of memory specified. human-friendly format : it can be “10M”, “100K”, “2G” and so on…
*
*
* @type {string}
* @example “100M”
* @example “1G”
* @example “10M”
*/
max_memory_restart: '1G',
/**
* inject when doing pm2 restart app.yml --env
*
* @type {object}
* @example {“NODE_ENV”: “development”, “ID”: “42”}
*/
env: {
NODE_ENV: 'DEVELOPMENT',
NODE_CONFIG_ENV: 'DEVELOPMENT',
},
/**
* default to true, [enable/disable source map file]
* @type {object}
* @example {“NODE_ENV”: “production”, “ID”: “89”}
*/
env_production: {
NODE_ENV: 'PRODUCTION',
NODE_CONFIG_ENV: 'PRODUCTION',
},
/**
* default to true, [enable/disable source map file]
*
* @type {boolean}
* @default true
*/
// source_map_support: true,
/**
* @see https://pm2.keymetrics.io/docs/usage/environment/#specific-environment-variables
* @type {string}
* @example 'NODE_APP_INSTANCE'
*/
// instance_var: 'NODE_APP_INSTANCE',
/**
* Excludes global variables starting with “REACT_” and will not allow their penetration into the cluster.
*
* @type {string[]}
* @example ['REACT_']
*/
// filter_env: ['NODE_ENV', 'NODE_CONFIG_ENV'],
/** Log files */
/**
* log date format (see log section)
*
* @type {string}
* @example “YYYY-MM-DD HH:mm Z”
*/
log_date_format: 'YYYY-MM-DD HH:mm Z',
/**
* error file path (default to $HOME/.pm2/logs/<app name>-error-<pid>.log)
*
* @type {string}
*/
// error_file: './logs/error.log',
/**
* output file path (default to $HOME/.pm2/logs/<app name>-out-<pid>.log)
*
* @type {string}
*/
// out_file: './logs/out.log',
/**
* file path for both output and error logs (disabled by default)
*
* @type {string}
*/
// log_file: './logs/combined.log',
/**
* if set to true, avoid to suffix logs file with the process id
*
* @type {boolean}
* @example true
*/
// combine_logs: true,
/**
* alias to combine_logs
*
* @type {boolean}
* @example true
*/
// merge_logs: true,
/**
* false by default. If true auto prefixes logs with Date
*
* @type {boolean}
* @default false
*/
// time: true,
/**
* pid file path
*
* @type {string}
* @default "$HOME/.pm2/pids/<app name>-<pid>.pid"
*/
// pid_file: './logs/pid.log',
/** Control flow */
/**
* min uptime of the app to be considered started
*
* @type {number}
* @example 1
*/
// min_uptime: 1,
/**
* time in ms before forcing a reload if app not listening
*
* @type {number}
* @example 8000
*/
listen_timeout: 50000,
/**
* time in milliseconds before sending {a final SIGKILL}
*
* @see https://pm2.keymetrics.io/docs/usage/signals-clean-restart/#cleaning-states-and-jobs
*/
kill_timeout: 5000,
/**
* shutdown an application with process.send(‘shutdown’) instead of process.kill(pid, SIGINT)
*
* @type {boolean}
*/
// shutdown_with_message: false,
/**
* Instead of reload waiting for listen event, wait for process.send(‘ready’)
*
* @type {boolean}
*/
wait_ready: true,
/**
* number of consecutive unstable restarts (less than 1sec interval or custom time via min_uptime) before your app is considered errored and stop being restarted
*
* @type {number}
* @example 10
*/
// max_restarts: 10,
/**
* time to wait before restarting a crashed app (in milliseconds). defaults to 0.
*
* @type {number}
* @example 4000
* @default 0
*/
// restart_delay: 4000,
/**
* true by default. if false, PM2 will not restart your app if it crashes or ends peacefully
*
* @type {boolean}
* @default true
*/
// autorestart: false,
/**
* a cron pattern to restart your app. Application must be running for cron feature to work
*
* @type {string}
* @example '1 0 * * *'
*/
// cron_restart: '1 0 * * *',
/**
* true by default. if false, PM2 will start without vizion features (versioning control metadata)
*
* @type {boolean}
* @default true
*/
// vizion: false,
/**
* a list of commands which will be executed after you perform a Pull/Upgrade operation from Keymetrics dashboard
*
* @type {string[]}
* @example ['npm install', 'echo launching the app']
*/
// post_update: ['npm install', 'echo launching the app'],
/**
* defaults to false. if true, you can start the same script several times which is usually not allowed by PM2
*
* @type {boolean}
* @default false
*/
// force: true,
/** Deployment */
/**
* SSH key path String
*
* @type {string}
* @default '$HOME/.ssh'
*/
// key: '$HOME/.ssh',
/**
* SSH user
*
* @type {string}
*/
// user: '',
/**
* SSH host
* @type {string}
*/
// host: '',
/**
* SSH options with no command-line flag, see ‘man ssh’
*
* @type {string}
*/
// ssh_options: '',
/**
* GIT remote/branch
*
* @type {string}
*/
// ref: '',
/**
* GIT remote
* @type {string}
*/
// repo: "",
/**
* path in the server
*
* @type {string}
*/
// path: '',
/**
* Pre-setup command or path to a script on your local machine
*
* @type {string}
*/
// 'pre-setup': '',
/**
* Post-setup commands or path to a script on the host machine
*
* @type {string}
*/
// 'post-setup': '',
/**
* pre-deploy action
*
* @type {string}
*/
// 'pre-deploy-local': '',
/**
* post-deploy action
*
* @type {string}
*/
// 'post-deploy': '',
},
],
};