From 1a634bc96857617c8016eddc7418143dcb0aefef Mon Sep 17 00:00:00 2001 From: Kasra Bigdeli Date: Thu, 4 Jan 2018 23:59:55 -0800 Subject: [PATCH] NetData launch is retrofitted --- app-backend/src/docker/DockerApi.js | 64 +++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/app-backend/src/docker/DockerApi.js b/app-backend/src/docker/DockerApi.js index acbc857..0aeefa3 100644 --- a/app-backend/src/docker/DockerApi.js +++ b/app-backend/src/docker/DockerApi.js @@ -262,6 +262,60 @@ class DockerApi { fromImage: imageName, tag: tag }); + }) + .then(function (stream) { + + return new Promise(function (resolve, reject) { + + let errorMessage = ''; + let logsBeforeError = []; + for (let i = 0; i < 20; i++) { + logsBeforeError.push(''); + } + + stream.setEncoding('utf8'); + + // THIS BLOCK HAS TO BE HERE. "end" EVENT WON'T GET CALLED OTHERWISE. + stream.on('data', function (chunk) { + + Logger.dev('stream data ' + chunk); + chunk = JSON.parse(chunk); + + let chuckStream = chunk.stream; + if (chuckStream) { + // Logger.dev('stream data ' + chuckStream); + logsBeforeError.shift(); + logsBeforeError.push(chuckStream); + } + + if (chunk.error) { + Logger.e(chunk.error); + Logger.e(JSON.stringify(chunk.errorDetail)); + errorMessage += '\n [truncated] \n'; + errorMessage += logsBeforeError.join(''); + errorMessage += '\n'; + errorMessage += chunk.error; + } + }); + + // stream.pipe(process.stdout, {end: true}); + // IncomingMessage + // https://nodejs.org/api/stream.html#stream_event_end + + stream.on('end', function () { + if (errorMessage) { + reject(errorMessage); + return; + } + resolve(); + }); + + stream.on('error', function (chunk) { + errorMessage += chunk; + }); + + }); + }); } @@ -359,6 +413,16 @@ class DockerApi { Binds: volumesMapped, CapAdd: addedCapabilities, NetworkMode: network + }, + LogConfig: { + Type: 'json-file', + Config: { + 'max-size': CaptainConstants.defaultMaxLogSize + } + }, + RestartPolicy: { + Name: 'always', + MaximumRetryCount: 5 } }); })