# Use docker containers to run node-red and pm2 to manage the application. After running for a while, node-red service stops

**URL:** <https://discourse.nodered.org/t/use-docker-containers-to-run-node-red-and-pm2-to-manage-the-application-after-running-for-a-while-node-red-service-stops/93334>\
**Category:** General\
**Tags:** docker\
**Created:** [22 November 2024 06:29 UTC](https://discourse.nodered.org/t/use-docker-containers-to-run-node-red-and-pm2-to-manage-the-application-after-running-for-a-while-node-red-service-stops/93334 "2024-11-22T06:29:58Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![cstslqq](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cstslqq/32/96640_2.png) [@cstslqq](https://discourse.nodered.org/u/cstslqq)\
**Post date:** [22 November 2024 06:29 UTC](https://discourse.nodered.org/t/use-docker-containers-to-run-node-red-and-pm2-to-manage-the-application-after-running-for-a-while-node-red-service-stops/93334/1 "2024-11-22T06:29:58Z")

</div>

Use docker containers to run node-red and pm2 to manage the application. After running for a while, node-red service stops. node-red version is 3.0.2. The following is the error message：

```auto
11:00:22 0|red | 21 Nov 11:00:22 - [warn] [function:模拟返回报文] [object Object]
11:58:01 0|red | getAndCheckSign {} 2024-11-21T11:58:01.197Z
11:58:01 0|red | TypeError: Callback must be a function. Received <ref *1> ChildProcess {
11:58:01 0|red | _events: [Object: null prototype] {
11:58:01 0|red | close: [Function: exithandler],
11:58:01 0|red | error: [Function: errorhandler]
11:58:01 0|red | },
11:58:01 0|red | _eventsCount: 2,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _closesNeeded: 3,
11:58:01 0|red | _closesGot: 0,
11:58:01 0|red | connected: false,
11:58:01 0|red | signalCode: null,
11:58:01 0|red | exitCode: null,
11:58:01 0|red | killed: false,
11:58:01 0|red | spawnfile: '/bin/sh',
11:58:01 0|red | _handle: Process {
11:58:01 0|red | onexit: [Function (anonymous)],
11:58:01 0|red | pid: 42,
11:58:01 0|red | [Symbol(owner_symbol)]: [Circular *1]
11:58:01 0|red | },
11:58:01 0|red | spawnargs: ['/bin/sh', '-c', 'pm2 stop red.js'],
11:58:01 0|red | pid: 42,
11:58:01 0|red | stdio: [
11:58:01 0|red | <ref *2> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: [ReadableState],
11:58:01 0|red | _events: [Object: null prototype],
11:58:01 0|red | _eventsCount: 1,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: [WritableState],
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4587,
11:58:01 0|red | [Symbol(kHandle)]: [Pipe],
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | },
11:58:01 0|red | <ref *3> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: [ReadableState],
11:58:01 0|red | _events: [Object: null prototype],
11:58:01 0|red | _eventsCount: 3,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: [WritableState],
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4588,
11:58:01 0|red | [Symbol(kHandle)]: [Pipe],
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | },
11:58:01 0|red | <ref *4> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: [ReadableState],
11:58:01 0|red | _events: [Object: null prototype],
11:58:01 0|red | _eventsCount: 3,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: [WritableState],
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4589,
11:58:01 0|red | [Symbol(kHandle)]: [Pipe],
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | }
11:58:01 0|red | ],
11:58:01 0|red | [Symbol(kCapture)]: false
11:58:01 0|red | }
11:58:01 0|red | at setTimeout (node:timers:141:3)
11:58:01 0|red | at Object.getAndCheckSign (/usr/src/app/node_modules/@node-red/editor-api/lib/editor/projects.js:109:17)
11:58:01 0|red | at Timeout._onTimeout (/usr/src/app/node_modules/@node-red/editor-api/lib/editor/comms.js:248:26)
11:58:01 0|red | at listOnTimeout (node:internal/timers:559:17)
11:58:01 0|red | at processTimers (node:internal/timers:502:7) {
11:58:01 0|red | code: 'ERR_INVALID_CALLBACK'
11:58:01 0|red | }
11:58:01 0|red | err<><><><><><>
11:58:01 0|red | TypeError: Callback must be a function. Received <ref *1> ChildProcess {
11:58:01 0|red | _events: [Object: null prototype] {
11:58:01 0|red | close: [Function: exithandler],
11:58:01 0|red | error: [Function: errorhandler]
11:58:01 0|red | },
11:58:01 0|red | _eventsCount: 2,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _closesNeeded: 3,
11:58:01 0|red | _closesGot: 0,
11:58:01 0|red | connected: false,
11:58:01 0|red | signalCode: null,
11:58:01 0|red | exitCode: null,
11:58:01 0|red | killed: false,
11:58:01 0|red | spawnfile: '/bin/sh',
11:58:01 0|red | _handle: Process {
11:58:01 0|red | onexit: [Function (anonymous)],
11:58:01 0|red | pid: 49,
11:58:01 0|red | [Symbol(owner_symbol)]: [Circular *1]
11:58:01 0|red | },
11:58:01 0|red | spawnargs: ['/bin/sh', '-c', 'pm2 stop red.js'],
11:58:01 0|red | pid: 49,
11:58:01 0|red | stdin: <ref *2> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: ReadableState {
11:58:01 0|red | objectMode: false,
11:58:01 0|red | highWaterMark: 16384,
11:58:01 0|red | buffer: BufferList { head: null, tail: null, length: 0 },
11:58:01 0|red | length: 0,
11:58:01 0|red | pipes: [],
11:58:01 0|red | flowing: null,
11:58:01 0|red | ended: false,
11:58:01 0|red | endEmitted: false,
11:58:01 0|red | reading: false,
11:58:01 0|red | constructed: true,
11:58:01 0|red | sync: true,
11:58:01 0|red | needReadable: false,
11:58:01 0|red | emittedReadable: false,
11:58:01 0|red | readableListening: false,
11:58:01 0|red | resumeScheduled: false,
11:58:01 0|red | errorEmitted: false,
11:58:01 0|red | emitClose: false,
11:58:01 0|red | autoDestroy: true,
11:58:01 0|red | destroyed: false,
11:58:01 0|red | errored: null,
11:58:01 0|red | closed: false,
11:58:01 0|red | closeEmitted: false,
11:58:01 0|red | defaultEncoding: 'utf8',
11:58:01 0|red | awaitDrainWriters: null,
11:58:01 0|red | multiAwaitDrain: false,
11:58:01 0|red | readingMore: false,
11:58:01 0|red | dataEmitted: false,
11:58:01 0|red | decoder: null,
11:58:01 0|red | encoding: null,
11:58:01 0|red | readable: false,
11:58:01 0|red | [Symbol(kPaused)]: null
11:58:01 0|red | },
11:58:01 0|red | _events: [Object: null prototype] { end: [Function: onReadableStreamEnd] },
11:58:01 0|red | _eventsCount: 1,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: WritableState {
11:58:01 0|red | objectMode: false,
11:58:01 0|red | highWaterMark: 16384,
11:58:01 0|red | finalCalled: false,
11:58:01 0|red | needDrain: false,
11:58:01 0|red | ending: false,
11:58:01 0|red | ended: false,
11:58:01 0|red | finished: false,
11:58:01 0|red | destroyed: false,
11:58:01 0|red | decodeStrings: false,
11:58:01 0|red | defaultEncoding: 'utf8',
11:58:01 0|red | length: 0,
11:58:01 0|red | writing: false,
11:58:01 0|red | corked: 0,
11:58:01 0|red | sync: true,
11:58:01 0|red | bufferProcessing: false,
11:58:01 0|red | onwrite: [Function: bound onwrite],
11:58:01 0|red | writecb: null,
11:58:01 0|red | writelen: 0,
11:58:01 0|red | afterWriteTickInfo: null,
11:58:01 0|red | buffered: [],
11:58:01 0|red | bufferedIndex: 0,
11:58:01 0|red | allBuffers: true,
11:58:01 0|red | allNoop: true,
11:58:01 0|red | pendingcb: 0,
11:58:01 0|red | constructed: true,
11:58:01 0|red | prefinished: false,
11:58:01 0|red | errorEmitted: false,
11:58:01 0|red | emitClose: false,
11:58:01 0|red | autoDestroy: true,
11:58:01 0|red | errored: null,
11:58:01 0|red | closed: false,
11:58:01 0|red | closeEmitted: false,
11:58:01 0|red | [Symbol(kOnFinished)]: []
11:58:01 0|red | },
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4595,
11:58:01 0|red | [Symbol(kHandle)]: Pipe { [Symbol(owner_symbol)]: [Circular *2] },
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | },
11:58:01 0|red | stdout: <ref *3> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: ReadableState {
11:58:01 0|red | objectMode: false,
11:58:01 0|red | highWaterMark: 16384,
11:58:01 0|red | buffer: BufferList { head: null, tail: null, length: 0 },
11:58:01 0|red | length: 0,
11:58:01 0|red | pipes: [],
11:58:01 0|red | flowing: true,
11:58:01 0|red | ended: false,
11:58:01 0|red | endEmitted: false,
11:58:01 0|red | reading: true,
11:58:01 0|red | constructed: true,
11:58:01 0|red | sync: false,
11:58:01 0|red | needReadable: true,
11:58:01 0|red | emittedReadable: false,
11:58:01 0|red | readableListening: false,
11:58:01 0|red | resumeScheduled: true,
11:58:01 0|red | errorEmitted: false,
11:58:01 0|red | emitClose: false,
11:58:01 0|red | autoDestroy: true,
11:58:01 0|red | destroyed: false,
11:58:01 0|red | errored: null,
11:58:01 0|red | closed: false,
11:58:01 0|red | closeEmitted: false,
11:58:01 0|red | defaultEncoding: 'utf8',
11:58:01 0|red | awaitDrainWriters: null,
11:58:01 0|red | multiAwaitDrain: false,
11:58:01 0|red | readingMore: false,
11:58:01 0|red | dataEmitted: false,
11:58:01 0|red | decoder: [StringDecoder],
11:58:01 0|red | encoding: 'utf8',
11:58:01 0|red | [Symbol(kPaused)]: false
11:58:01 0|red | },
11:58:01 0|red | _events: [Object: null prototype] {
11:58:01 0|red | end: [Function: onReadableStreamEnd],
11:58:01 0|red | close: [Function (anonymous)],
11:58:01 0|red | data: [Function: onChildStdout]
11:58:01 0|red | },
11:58:01 0|red | _eventsCount: 3,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: WritableState {
11:58:01 0|red | objectMode: false,
11:58:01 0|red | highWaterMark: 16384,
11:58:01 0|red | finalCalled: false,
11:58:01 0|red | needDrain: false,
11:58:01 0|red | ending: false,
11:58:01 0|red | ended: false,
11:58:01 0|red | finished: false,
11:58:01 0|red | destroyed: false,
11:58:01 0|red | decodeStrings: false,
11:58:01 0|red | defaultEncoding: 'utf8',
11:58:01 0|red | length: 0,
11:58:01 0|red | writing: false,
11:58:01 0|red | corked: 0,
11:58:01 0|red | sync: true,
11:58:01 0|red | bufferProcessing: false,
11:58:01 0|red | onwrite: [Function: bound onwrite],
11:58:01 0|red | writecb: null,
11:58:01 0|red | writelen: 0,
11:58:01 0|red | afterWriteTickInfo: null,
11:58:01 0|red | buffered: [],
11:58:01 0|red | bufferedIndex: 0,
11:58:01 0|red | allBuffers: true,
11:58:01 0|red | allNoop: true,
11:58:01 0|red | pendingcb: 0,
11:58:01 0|red | constructed: true,
11:58:01 0|red | prefinished: false,
11:58:01 0|red | errorEmitted: false,
11:58:01 0|red | emitClose: false,
11:58:01 0|red | autoDestroy: true,
11:58:01 0|red | errored: null,
11:58:01 0|red | closed: false,
11:58:01 0|red | closeEmitted: false,
11:58:01 0|red | writable: false,
11:58:01 0|red | [Symbol(kOnFinished)]: []
11:58:01 0|red | },
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4596,
11:58:01 0|red | [Symbol(kHandle)]: Pipe { reading: true, [Symbol(owner_symbol)]: [Circular *3] },
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | },
11:58:01 0|red | stderr: <ref *4> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: ReadableState {
11:58:01 0|red | objectMode: false,
11:58:01 0|red | highWaterMark: 16384,
11:58:01 0|red | buffer: BufferList { head: null, tail: null, length: 0 },
11:58:01 0|red | length: 0,
11:58:01 0|red | pipes: [],
11:58:01 0|red | flowing: true,
11:58:01 0|red | ended: false,
11:58:01 0|red | endEmitted: false,
11:58:01 0|red | reading: true,
11:58:01 0|red | constructed: true,
11:58:01 0|red | sync: false,
11:58:01 0|red | needReadable: true,
11:58:01 0|red | emittedReadable: false,
11:58:01 0|red | readableListening: false,
11:58:01 0|red | resumeScheduled: true,
11:58:01 0|red | errorEmitted: false,
11:58:01 0|red | emitClose: false,
11:58:01 0|red | autoDestroy: true,
11:58:01 0|red | destroyed: false,
11:58:01 0|red | errored: null,
11:58:01 0|red | closed: false,
11:58:01 0|red | closeEmitted: false,
11:58:01 0|red | defaultEncoding: 'utf8',
11:58:01 0|red | awaitDrainWriters: null,
11:58:01 0|red | multiAwaitDrain: false,
11:58:01 0|red | readingMore: false,
11:58:01 0|red | dataEmitted: false,
11:58:01 0|red | decoder: [StringDecoder],
11:58:01 0|red | encoding: 'utf8',
11:58:01 0|red | [Symbol(kPaused)]: false
11:58:01 0|red | },
11:58:01 0|red | _events: [Object: null prototype] {
11:58:01 0|red | end: [Function: onReadableStreamEnd],
11:58:01 0|red | close: [Function (anonymous)],
11:58:01 0|red | data: [Function: onChildStderr]
11:58:01 0|red | },
11:58:01 0|red | _eventsCount: 3,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: WritableState {
11:58:01 0|red | objectMode: false,
11:58:01 0|red | highWaterMark: 16384,
11:58:01 0|red | finalCalled: false,
11:58:01 0|red | needDrain: false,
11:58:01 0|red | ending: false,
11:58:01 0|red | ended: false,
11:58:01 0|red | finished: false,
11:58:01 0|red | destroyed: false,
11:58:01 0|red | decodeStrings: false,
11:58:01 0|red | defaultEncoding: 'utf8',
11:58:01 0|red | length: 0,
11:58:01 0|red | writing: false,
11:58:01 0|red | corked: 0,
11:58:01 0|red | sync: true,
11:58:01 0|red | bufferProcessing: false,
11:58:01 0|red | onwrite: [Function: bound onwrite],
11:58:01 0|red | writecb: null,
11:58:01 0|red | writelen: 0,
11:58:01 0|red | afterWriteTickInfo: null,
11:58:01 0|red | buffered: [],
11:58:01 0|red | bufferedIndex: 0,
11:58:01 0|red | allBuffers: true,
11:58:01 0|red | allNoop: true,
11:58:01 0|red | pendingcb: 0,
11:58:01 0|red | constructed: true,
11:58:01 0|red | prefinished: false,
11:58:01 0|red | errorEmitted: false,
11:58:01 0|red | emitClose: false,
11:58:01 0|red | autoDestroy: true,
11:58:01 0|red | errored: null,
11:58:01 0|red | closed: false,
11:58:01 0|red | closeEmitted: false,
11:58:01 0|red | writable: false,
11:58:01 0|red | [Symbol(kOnFinished)]: []
11:58:01 0|red | },
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4597,
11:58:01 0|red | [Symbol(kHandle)]: Pipe { reading: true, [Symbol(owner_symbol)]: [Circular *4] },
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | },
11:58:01 0|red | stdio: [
11:58:01 0|red | <ref *2> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: [ReadableState],
11:58:01 0|red | _events: [Object: null prototype],
11:58:01 0|red | _eventsCount: 1,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: [WritableState],
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4595,
11:58:01 0|red | [Symbol(kHandle)]: [Pipe],
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | },
11:58:01 0|red | <ref *3> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: [ReadableState],
11:58:01 0|red | _events: [Object: null prototype],
11:58:01 0|red | _eventsCount: 3,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: [WritableState],
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4596,
11:58:01 0|red | [Symbol(kHandle)]: [Pipe],
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | },
11:58:01 0|red | <ref *4> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: [ReadableState],
11:58:01 0|red | _events: [Object: null prototype],
11:58:01 0|red | _eventsCount: 3,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: [WritableState],
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4597,
11:58:01 0|red | [Symbol(kHandle)]: [Pipe],
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | }
11:58:01 0|red | ],
11:58:01 0|red | [Symbol(kCapture)]: false
11:58:01 0|red | }
11:58:01 0|red | at setTimeout (node:timers:141:3)
11:58:01 0|red | at Object.getAndCheckSign (/usr/src/app/node_modules/@node-red/editor-api/lib/editor/projects.js:201:9)
11:58:01 0|red | at Timeout._onTimeout (/usr/src/app/node_modules/@node-red/editor-api/lib/editor/comms.js:248:26)
11:58:01 0|red | at listOnTimeout (node:internal/timers:559:17)
11:58:01 0|red | at processTimers (node:internal/timers:502:7) {
11:58:01 0|red | code: 'ERR_INVALID_CALLBACK'
11:58:01 0|red | }
11:58:01 0|red | 21 Nov 11:58:01 - [red] Uncaught Exception:
11:58:01 0|red | 21 Nov 11:58:01 - [error] TypeError: Callback must be a function. Received <ref *1> ChildProcess {
11:58:01 0|red | _events: [Object: null prototype] {
11:58:01 0|red | close: [Function: exithandler],
11:58:01 0|red | error: [Function: errorhandler]
11:58:01 0|red | },
11:58:01 0|red | _eventsCount: 2,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _closesNeeded: 3,
11:58:01 0|red | _closesGot: 0,
11:58:01 0|red | connected: false,
11:58:01 0|red | signalCode: null,
11:58:01 0|red | exitCode: null,
11:58:01 0|red | killed: false,
11:58:01 0|red | spawnfile: '/bin/sh',
11:58:01 0|red | _handle: Process {
11:58:01 0|red | onexit: [Function (anonymous)],
11:58:01 0|red | pid: 49,
11:58:01 0|red | [Symbol(owner_symbol)]: [Circular *1]
11:58:01 0|red | },
11:58:01 0|red | spawnargs: ['/bin/sh', '-c', 'pm2 stop red.js'],
11:58:01 0|red | pid: 49,
11:58:01 0|red | <ref *4> Socket {
11:58:01 0|red | connecting: false,
11:58:01 0|red | _hadError: false,
11:58:01 0|red | _parent: null,
11:58:01 0|red | _host: null,
11:58:01 0|red | _readableState: [ReadableState],
11:58:01 0|red | _events: [Object: null prototype],
11:58:01 0|red | _eventsCount: 3,
11:58:01 0|red | _maxListeners: undefined,
11:58:01 0|red | _writableState: [WritableState],
11:58:01 0|red | allowHalfOpen: false,
11:58:01 0|red | _sockname: null,
11:58:01 0|red | _pendingData: null,
11:58:01 0|red | _pendingEncoding: '',
11:58:01 0|red | server: null,
11:58:01 0|red | _server: null,
11:58:01 0|red | [Symbol(async_id_symbol)]: 4597,
11:58:01 0|red | [Symbol(kHandle)]: [Pipe],
11:58:01 0|red | [Symbol(kSetNoDelay)]: false,
11:58:01 0|red | [Symbol(lastWriteQueueSize)]: 0,
11:58:01 0|red | [Symbol(timeout)]: null,
11:58:01 0|red | [Symbol(kBuffer)]: null,
11:58:01 0|red | [Symbol(kBufferCb)]: null,
11:58:01 0|red | [Symbol(kBufferGen)]: null,
11:58:01 0|red | [Symbol(kCapture)]: false,
11:58:01 0|red | [Symbol(kBytesRead)]: 0,
11:58:01 0|red | [Symbol(kBytesWritten)]: 0
11:58:01 0|red | }
11:58:01 0|red | ],
11:58:01 0|red | [Symbol(kCapture)]: false
11:58:01 0|red | }
11:58:01 0|red | at setTimeout (node:timers:141:3)
11:58:01 0|red | at Object.getAndCheckSign (/usr/src/app/node_modules/@node-red/editor-api/lib/editor/projects.js:201:9)
11:58:01 0|red | at Timeout._onTimeout (/usr/src/app/node_modules/@node-red/editor-api/lib/editor/comms.js:248:26)
11:58:01 0|red | at listOnTimeout (node:internal/timers:559:17)
11:58:01 0|red | at processTimers (node:internal/timers:502:7)
2024-11-21T11:58:01: PM2 log: App [red:0] exited with code [1] via signal [SIGINT]
11:58:01 PM2 | App [red:0] exited with code [1] via signal [SIGINT]
2024-11-21T11:58:01: PM2 log: App [red:0] starting in -fork mode-
11:58:01 PM2 | App [red:0] starting in -fork mode-
2024-11-21T11:58:01: PM2 log: App [red:0] online
11:58:01 PM2 | App [red:0] online
2024-11-21T11:58:01: PM2 log: Stopping app:red id:0
2024-11-21T11:58:01: PM2 log: Stopping app:red id:0
11:58:01 PM2 | Stopping app:red id:0
11:58:01 PM2 | Error: spawn ps ENOENT
11:58:01 PM2 | at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
11:58:01 PM2 | at onErrorNT (node:internal/child_process:478:16)
11:58:01 PM2 | at processTicksAndRejections (node:internal/process/task_queues:83:21) {
11:58:01 PM2 | errno: -2,
11:58:01 PM2 | code: 'ENOENT',
11:58:01 PM2 | syscall: 'spawn ps',
11:58:01 PM2 | path: 'ps',
11:58:01 PM2 | spawnargs: ['-o', 'pid', '--no-headers', '--ppid', 58]
11:58:01 PM2 | }
11:58:01 PM2 | Stopping app:red id:0
11:58:01 PM2 | Error: spawn ps ENOENT
11:58:01 PM2 | at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
11:58:01 PM2 | at onErrorNT (node:internal/child_process:478:16)
11:58:01 PM2 | at processTicksAndRejections (node:internal/process/task_queues:83:21) {
11:58:01 PM2 | errno: -2,
11:58:01 PM2 | code: 'ENOENT',
11:58:01 PM2 | syscall: 'spawn ps',
11:58:01 PM2 | path: 'ps',
11:58:01 PM2 | spawnargs: ['-o', 'pid', '--no-headers', '--ppid', 58]
11:58:01 PM2 | }
2024-11-21T11:58:01: PM2 log: App [red:0] exited with code [0] via signal [SIGINT]
11:58:01 PM2 | App [red:0] exited with code [0] via signal [SIGINT]
2024-11-21T11:58:01: PM2 log: pid=58 msg=process killed
2024-11-21T11:58:01: PM2 log: pid=58 msg=process killed
11:58:01 PM2 | pid=58 msg=process killed
11:58:01 PM2 | pid=58 msg=process killed

```

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [22 November 2024 16:03 UTC](https://discourse.nodered.org/t/use-docker-containers-to-run-node-red-and-pm2-to-manage-the-application-after-running-for-a-while-node-red-service-stops/93334/2 "2024-11-22T16:03:58Z")

</div>

> [@cstslqq](#):
>
> `[warn] [function:模拟返回报文]`

It seems to be saying that there is a problem in that function.

However, if you want node red to run reliably 24/7 then many would say that Windows is not the right OS. Get a refurbished Lenovo Lifebook and put Ubuntu on it and it will run happily for years.

---

<div class="post-metadata">

**Author:** ![cstslqq](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cstslqq/32/96640_2.png) [@cstslqq](https://discourse.nodered.org/u/cstslqq)\
**Post date:** [25 November 2024 05:56 UTC](https://discourse.nodered.org/t/use-docker-containers-to-run-node-red-and-pm2-to-manage-the-application-after-running-for-a-while-node-red-service-stops/93334/3 "2024-11-25T05:56:35Z")

</div>

You mean that the node-red service stopped because of a problem with the json file such as that function. By the way, It runs on CentOS 7.0.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [25 November 2024 09:12 UTC](https://discourse.nodered.org/t/use-docker-containers-to-run-node-red-and-pm2-to-manage-the-application-after-running-for-a-while-node-red-service-stops/93334/4 "2024-11-25T09:12:20Z")

</div>

Looking again I don't think the problem is to do with that function. I had not noticed that the warning message is long before the crash. In fact I think that this is probably the problem

```auto
  getAndCheckSign {} 2024-11-21T11:58:01.197Z
11:58:01 0|red | TypeError: Callback must be a function. Received <ref *1> ChildProcess {
11:58:01 0|red | _events: [Object: null prototype] {
11:58:01 0|red | close: [Function: exithandler],
11:58:01 0|red | error: [Function: errorhandler]
11:58:01 0|red | },

```

along with

```auto
11:58:01 0|red | at setTimeout (node:timers:141:3)
11:58:01 0|red | at Object.getAndCheckSign (/usr/src/app/node_modules/@node-red/editor-api/lib/editor/projects.js:109:17)
11:58:01 0|red | at Timeout._onTimeout (/usr/src/app/node_modules/@node-red/editor-api/lib/editor/comms.js:248:26)
11:58:01 0|red | at listOnTimeout (node:internal/timers:559:17)
11:58:01 0|red | at processTimers (node:internal/timers:502:7) {
11:58:01 0|red | code: 'ERR_INVALID_CALLBACK'
11:58:01 0|red | }

```

That should tell somebody what is going on, but I don't know what it means.  
Hopefully one of the core developers will understand it.

> [@cstslqq](#):
>
> It runs on CentOS 7.0.

Sorry, I assumed that you were using Windows as you are using pm2.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [23 February 2025 09:12 UTC](https://discourse.nodered.org/t/use-docker-containers-to-run-node-red-and-pm2-to-manage-the-application-after-running-for-a-while-node-red-service-stops/93334/5 "2025-02-23T09:12:55Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
