我在使用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中发现了类似的问题,不同类型的可能的解决方案,但没有任何工作。
2条答案
按热度按时间368yc8dk1#
将postgres容器的端口号更改为默认的
5432
,并检查ts文件中的空闲超时。dffbzjpn2#
您的应用程序和PostgreSQL服务器之间的错误配置或网络相关问题通常会导致
Connection terminated unexpectedly
错误。由于PostgreSQL是在Docker容器中使用的,因此确保足够的连接性至关重要。在连接配置中使用容器名称postgres-container
而不是localhost
,因为Docker为容器名称提供DNS解析。此外,请确保您的主机网络和Docker容器都已连接。验证您的主机是否有任何可能阻止连接到容器端口的防火墙设置或安全应用程序。另一件事,你可以这样做,设置第二个-p
端口号为5432
,因为它是PostgreSQL的默认端口,这两个端口不必匹配。如果有帮助的话一定要告诉我