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]