Docker のターミナル出力が変なところで折り返される問題

Docker

Docker の標準出力が変な文字数で折り返されて表示される問題の解決方法についてです。

原因

ホスト側のターミナルの幅の情報が Docker コンテナの方に渡されないことが原因です。

対処方法

以下のような形で環境変数を使ってカラム数を指定すれば、ホスト側のターミナルの幅が Docker コンテナにも適用されるので、これで解決できます。

docker exec -e COLUMNS=$COLUMNS -it [container] [mycommand]
docker-compose run -e COLUMNS=$COLUMNS --rm [container] [mycommand]
docker-compose exec -e COLUMNS=$COLUMNS [container] [mycommand]

特定の値を渡したい場合は COLUMNS=100 等とすればよいです。

私は( macOS Mojave では) COLUMNS=$COLUMNS が使えるのでこれを使っていますが、環境によってはホスト側に変数 $COLUMNS が存在しないこともあるかもしれません。 $COLUMNS が利用できない場合は次の形も試してみるとよいかもしれません。

docker-compose exec -e COLUMNS="`tput cols`" [container] [mycommand]

参考


アバター
後藤隼人 ( ごとうはやと )

Python や PHP を使ってソフトウェア開発やウェブ制作をしています。詳しくはこちら