从 docker 到 websocket 的彩色输出
Colorized output from docker to websocket
这可能是一个有点复杂的问题,但我愿意尝试向我提出的所有建议。
我是 运行 克隆 git 存储库的 docker 实例,它是 php 7 apache docker 实例:
FROM php:7.0-apache
使用 Symfony Process Component 我正在启动我的容器并传递我的环境变量。
"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 输出,就像您通常在终端上看到的那样。不过此时所有格式和颜色似乎都丢失了。
是否有任何网络可以将 docker 输出传递到 websocket 并仍然保持我的着色以在网页上显示?
欢迎任何指导我正确方向的提示或技巧,因为我在这里问了很多。
感谢阅读,干杯。
编辑
明确地说,到目前为止我还没有得到任何彩色输出 docker 容器给我的输出看起来就像这样(作曲家示例):
[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)
在这种情况下,我只需在 docker 运行 命令中添加一个 -t 标志。我试图添加 -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));
我只需要记住还要传递生成的 HTML 的字符串长度,一切都完美呈现。
这可能是一个有点复杂的问题,但我愿意尝试向我提出的所有建议。
我是 运行 克隆 git 存储库的 docker 实例,它是 php 7 apache docker 实例:
FROM php:7.0-apache
使用 Symfony Process Component 我正在启动我的容器并传递我的环境变量。
"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 输出,就像您通常在终端上看到的那样。不过此时所有格式和颜色似乎都丢失了。
是否有任何网络可以将 docker 输出传递到 websocket 并仍然保持我的着色以在网页上显示?
欢迎任何指导我正确方向的提示或技巧,因为我在这里问了很多。
感谢阅读,干杯。
编辑
明确地说,到目前为止我还没有得到任何彩色输出 docker 容器给我的输出看起来就像这样(作曲家示例):
[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)
在这种情况下,我只需在 docker 运行 命令中添加一个 -t 标志。我试图添加 -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));
我只需要记住还要传递生成的 HTML 的字符串长度,一切都完美呈现。