从docker到websocket的彩色输出

这可能有点复杂的问题,但我可以尝试任何和所有的build议。

我正在运行一个克隆git仓库的docker实例,它是一个php 7的apache docker实例:

FROM php:7.0-apache 

用Symfony进程组件启动我的容器并传递我的环境variables。

 "docker run -e REPOSITORY=\"{$url}\" -e COMPOSER_ALLOW_SUPERUSER=1 -e TERM='xterm-256color' arbiter bash -l" 

我已经添加了xterm-256-color环境,以确保我得到彩色输出(纠正我,如果这是错误的)。

要显示容器的输出,我使用Symfony Process Component将其发送到websocket。

 $process->run(function ($type, $buffer) use ($socket) { socket_write($socket, $buffer, strlen($buffer)); }); 

在这一点上,我可以使用像socket.io这样的东西,实时显示在网页上。

问题是,我想显示docker输出正确的颜色,你通常会看到它与terminal。 尽pipe如此,所有的格式化和着色似乎都失去了。

有没有任何网站,我可以通过docker输出到WebSocket,仍然保持我的着色显示在网页上?

任何提示或提示引导我在正确的方向是受欢迎的,因为我在这里问很多。

感谢读书,欢呼。

编辑

为了清楚,我还没有得到任何彩色的输出,从docker容器给我的输出看起来就像这样(composer php的例子):

 [2017-02-12 01:02:56] local.INFO: remote: Counting objects: 69, done. remote: Compressing objects: 2% (1/47) remote: Compressing objects: 4% (2/47) 

在这种情况下,我只需要将-t标志添加到我的docker run命令中。 我试图添加-it这导致了一个错误。 显然,我的不好,没有必要,因为这个过程没有任何互动。

在下面的示例中添加-t标志后,ANSI符号开始显示:

 docker run -t -e REPOSITORY=\"{$url}\" -e COMPOSER_ALLOW_SUPERUSER=1 -e TERM='xterm' arbiter 

我正在使用@Robert提供的库格式化ANSI符号,现在一切正常。 执行时:

 socket_write($socket, $buffer, strlen($buffer)); 

我只需要记住还要传递生成的HTMLstring长度,这一切都呈现完美。