2017-05-15 4 views
3

これは少し複雑な質問かもしれませんが、私はすべての提案を私に投げてみるために開いています。ドッカーからwebsocketへの色付き出力

私はgitリポジトリのクローンをドッキングウィンドウのインスタンスを実行しています、それはPHP 7 Apacheのドッキングウィンドウのインスタンスです:Symfony Process Component

FROM php:7.0-apache 

私はコンテナを起動し、私の環境変数を渡しています。

"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)); 
}); 

この時点では、リアルタイムでWebページに表示するためにsocket.ioのようなものを使用できます。

問題は、ターミナルで通常見られるように、ドッカーの出力を適切な色づけで表示したいということです。すべての書式設定と色分けがこの時点で失われているようです。

ドッカーの出力をwebsocketに渡しても、Webページに表示するために私の色付けを維持できますか?

私はここでたくさんお尋ねしているので、正しい方向に私を導くヒントやヒントは歓迎します。

読んでいただきありがとうございます。

編集

私はまだ(作曲例)ドッキングウィンドウコンテナから私に与えられた出力は、単純に次のようになり、これまで任意の色の出力を取得していない午前明確にする:

[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) 
+1

カラー出力の形式は何ですか? ANSIの色ですか? (すなわち、終端色)を生成する。そうであれば、それをHTMLカラーに変換する何かが必要になります。これは別の話です。次のようなものがあります:https://github.com/sensiolabs/ansi-to-html – Robert

+0

websocketに渡すとわかるような書式はありません。私はそれをログファイルに出力すると、私も色付きの出力を得ていません。私は実際に私のコンテナに潜入すると、 'docker run -it -e REPOSITORY =" https://github.com/stephan-v/test.git "arbiter'私は出力を色づけしています。 –

答えて

2

でこのケースでは、ドッカーの実行コマンドに-tフラグを追加するだけでした。私は-itを追加しようとしていたため、エラーが発生しました。明らかに、このプロセスについて何も対話がないので、私の悪い、そして必要ではない。今完全に正常に動作し

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

私は@Robertのすべてのものから提供するライブラリでANSI記号の書式を設定しています:ANSIシンボル以下の例のよう-tフラグを追加した後

が現れて始めました。実行する場合:

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

を私はまた、生成されたHTMLの文字列の長さを渡すために覚えなければならなかったし、それはすべて完璧にレンダリングします。

関連する問題