28 lines
725 B
TypeScript
28 lines
725 B
TypeScript
|
import Dockerode from 'dockerode';
|
||
|
import { saveAppLog } from './applications/logging';
|
||
|
|
||
|
const { DOCKER_ENGINE, DOCKER_NETWORK } = process.env;
|
||
|
export const docker = {
|
||
|
engine: new Dockerode({
|
||
|
socketPath: DOCKER_ENGINE
|
||
|
}),
|
||
|
network: DOCKER_NETWORK
|
||
|
};
|
||
|
export async function streamEvents(stream, configuration) {
|
||
|
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) {
|
||
|
saveAppLog(event.error, configuration, true);
|
||
|
reject(event.error);
|
||
|
} else if (event.stream) {
|
||
|
saveAppLog(event.stream, configuration);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|