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

时间:2018-02-28 17:44:24

标签: docker docker-compose

docker exec -tiu postgres some_db_container psql db_name

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

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

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

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

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

1 个答案:

答案 0 :(得分: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

这解决了我的问题。