如何更正`docker exec psql`的终端大小?

Alt*_*eus 4 docker docker-compose

docker exec -tiu postgres some_db_container psql db_name

这是一个方便的命令,可以连接到任何有权访问的docker容器,而无需发现应用程序用来连接的用户名和密码.

麻烦的是,此时分配的TTY是疯了.它不知道终端有多大,当它试图包裹线时它不会断线,如果你试图在中间编辑线,它就会完全脱离轨道.大多数情况下,在文本编辑器中编写查询并粘贴它更容易.

我想也许是因为在制作容器时没有分配TTY,但是tty: true在docker-compose中似乎没有效果.

我很惊讶我甚至在互联网上找不到这个问题的讨论,因为唯一的另一种连接方式是知道容器的IP和用户连接的凭据.

这有什么问题吗?每次我想调查一个问题时,我宁愿不必挖掘生产密码,如果我可以解决这个问题,我可以作为postgres用户连接.

小智 6

我遇到了同样的问题,经过一些研究发现了这个答案https://github.com/moby/moby/issues/33794#issuecomment-312873988.

诀窍是告诉容器中的终端它的大小.

docker exec -tiu -e COLUMNS="`tput cols`" -e LINES="`tput lines`" postgres some_db_container psql db_name
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题.