什么是最好的方法来流我的docker容器日志到我的Web浏览器,而不刷新使用express
和node-docker-api
。
这是我目前的剧本。
app.get('/container/:id/log', async function(req, res){
await checkTokenHeader(req, res);
//todo: Check if Container exist
let container = await getDockerContainer(req.params.id);
await container.logs({
follow: true,
stdout: true,
stderr: true
}).then(async function(stream){
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.setHeader('Transfer-Encoding', 'chunked');
console.log(stream)
//stream.on('data', info => res.write(info.toString('utf-8').slice(8)))
//stream.on('data', info => console.log(info.toString('utf-8').slice(8)))
//I WANT TO STREAM THE OUTPUT TO Webbrowser or inside a div
})
});
我尝试使用res.write
或res.send
,但没有任何效果
1条答案
按热度按时间jmo0nnb31#
实现你所描述的一种可能的方法是:
1.使用一些客户端JavaScript构建一个HTML文档以获取日志
1.建立WebSocket连接以将日志流式传输到客户端
下面是一个非常简单的实现:
使用以下
docker-compose.yml
运行上面的代码:在不刷新的情况下将日志行追加到页: