docker でターミナルの折返しがキツイ
Dockerでbash などの ttyで接続すると、横幅サイズがおかしくなるとの、折返し時に、妙なイチに折り返すのでキツイ。
github のissue スレ見てるとエラーの原因は docker exec -it
を実行したときに、 /exec/${EXEC-ID}/resize"
が実行されないことにあるらしい
折り返しがおかしくなる例
幅がおかしくなる例
折り返すのがおかしくなるのは、linesが合わないことに依るもので、幅がおかしくなるのはcolsが合わないことによる。
そのうち解決されるんだろうけど
いずれバブフィックスで治りそうだけど、いま辛い。
とりあえず治す方法
docker exec -e COLUMNS=$(tput cols) -e LINES=$(tput lines) -it CONTAINER_ID bash
MySQL などのコマンドも同じく
docker exec -e COLUMNS=$(tput cols) -e LINES=$(tput lines) -it CONTAINER_ID mysql -p -u MYSQL_USER DATABASE
docker側の問題で利用者の私達に環境が原因ということでもなく、 bash を割当てている tty に設定が届かないことによるので、環境変数で明示的に設定してまえば、何とか回避することが出来る。
dockerfile の環境変数かbash起動時になにか実行することで解決もできそうだけど、dockerfile や環境変数をすべてのインスタンスに書くのは現実的じゃないので、exec 実行時にフィッティングするのが妥協点っぽい
解決した
とりあえず解決する。
これでしばらくは戦える。
サイズは sttyかtput で確認ができる。
stty をつかうか、 tput を使うことで、現在開いているターミナルのサイズをしって、ソレを使うことが出来る。
takuya@sakura:~$ tput lines 52 takuya@sakura:~$ stty size 52 180 takuya@sakura:~$ tput cols 180 takuya@sakura:~$ tput lines 52