Dockerized postgres - 在 nodejs 中等待 postgres 启动

时间:2021-02-09 04:35:37

标签: node.js postgresql docker

我正在从 nodejs 测试环境启动 docker,然后运行集成测试。我必须使用类似的东西:

setTimeout(test, 3000);

否则 postgres 可能还没有运行。

节点有没有办法等待从端口 5432 开始的 postgres? This answer 看起来很有希望,但它在 while 中使用了 bash,我需要我的解决方案在 node 中工作才能跨平台。谢谢!

2 个答案:

答案 0 :(得分:0)

也许你可以简单地尝试固定 5432 端口,如果它被使用,那么你可以继续前进。

答案 1 :(得分:0)

我已将 is-port-reachable 用于类似任务。

检查端口是否打开所需要做的只是

await isPortReachable(5432, {host: 'PG_HOST'});

如果您将 PG 绑定到主机上的 5432,则将 PG_HOST 替换为 localhost,否则将其替换为容器的主机名,例如 docker-compose 生成;例如mytestproj_postgresql_1

另一个我没有使用但看起来很有希望的选项是 tcp-port-used

相关问题