Docker容器上的Typescript & pg & Express & Psql:“错误:连接意外终止”

fdx2calv  于 2023-10-16  发布在  Docker
关注(0)|答案(2)|浏览(128)

我在使用postres image连接到我在Docker上的容器上运行的Db时遇到问题:

docker run --name postgres-container -p 2345:2345 -e POSTGRES_PASSWORD=password123 -e POSTGRES_USER=admin -d postgres

我的打字脚本代码(在一个ts文件中)

app.get("/hello", async (request: Request, response: Response) => {
    const pool = new Pool({
        user: 'admin',
        host: 'localhost',
        database: 'betsdb',
        password: 'password123',
        port: 2345,
    });

     console.log("trying connection");
     const client = await pool.connect();
     console.log("succed");
});

当执行“await pool.connect”时,它给出错误“Error:连接意外终止”
在docker中,我可以毫无问题地与数据库进行交互,密码工作正常,一切正常。我的容器在http://localhost:2345上运行,我在Docker桌面上验证了这一点。
我真的很感激任何一种解决方案,请。我一直在寻找一个解决方案,在过去的几个小时里,在stackoverflow中发现了类似的问题,不同类型的可能的解决方案,但没有任何工作。

368yc8dk

368yc8dk1#

将postgres容器的端口号更改为默认的5432,并检查ts文件中的空闲超时。

dffbzjpn

dffbzjpn2#

您的应用程序和PostgreSQL服务器之间的错误配置或网络相关问题通常会导致Connection terminated unexpectedly错误。由于PostgreSQL是在Docker容器中使用的,因此确保足够的连接性至关重要。在连接配置中使用容器名称postgres-container而不是localhost,因为Docker为容器名称提供DNS解析。此外,请确保您的主机网络和Docker容器都已连接。验证您的主机是否有任何可能阻止连接到容器端口的防火墙设置或安全应用程序。另一件事,你可以这样做,设置第二个-p端口号为5432,因为它是PostgreSQL的默认端口,这两个端口不必匹配。
如果有帮助的话一定要告诉我

相关问题