Fazer backup do Postgres com docker exec -t e redirecionar para arquivo corrompe o dump: o -t aloca um pseudo-TTY, que faz tradução de fim de linha e troca todo \n por \r\n.

# errado: dump inteiro sai com CRLF, pode restaurar mal
docker exec -t pg pg_dump -U postgres db > dump.sql

# certo: sem -t
docker exec pg pg_dump -U postgres db > dump.sql

O -t só faz sentido quando você quer um terminal interativo. Para capturar saída em arquivo ou pipe, sempre sem ele. Confere com file dump.sql — deve dizer “ASCII text”, não “ASCII text, with CRLF line terminators”.