32 lines
777 B
JavaScript
32 lines
777 B
JavaScript
const Dockerode = require('dockerode')
|
|
const { saveAppLog } = require('./logging')
|
|
|
|
const docker = {
|
|
engine: new Dockerode({
|
|
socketPath: process.env.DOCKER_ENGINE
|
|
}),
|
|
network: process.env.DOCKER_NETWORK
|
|
}
|
|
async function streamEvents (stream, configuration) {
|
|
try {
|
|
await new Promise((resolve, reject) => {
|
|
docker.engine.modem.followProgress(stream, onFinished, onProgress)
|
|
function onFinished (err, res) {
|
|
if (err) reject(err)
|
|
resolve(res)
|
|
}
|
|
function onProgress (event) {
|
|
if (event.error) {
|
|
reject(event.error)
|
|
return
|
|
}
|
|
saveAppLog(event.stream, configuration)
|
|
}
|
|
})
|
|
} catch (error) {
|
|
throw { error, type: 'app' }
|
|
}
|
|
}
|
|
|
|
module.exports = { streamEvents, docker }
|