我正在从 nodejs 测试环境启动 docker,然后运行集成测试。我必须使用类似的东西:
setTimeout(test, 3000);
否则 postgres 可能还没有运行。
节点有没有办法等待从端口 5432 开始的 postgres? This answer 看起来很有希望,但它在 while
中使用了 bash
,我需要我的解决方案在 node 中工作才能跨平台。谢谢!
答案 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。