【问题标题】:Dockerized postgres - wait in nodejs for postgres to startDockerized postgres - 在 nodejs 中等待 postgres 启动
【发布时间】:2021-05-12 17:34:51
【问题描述】:
我正在从 nodejs 测试环境启动 docker,然后运行集成测试。我必须使用类似的东西:
setTimeout(test, 3000);
否则 postgres 可能还没有运行。
节点中有没有办法等待从端口 5432 开始的 postgres? This answer 看起来很有希望,但它在bash 中使用了while,我需要我的解决方案才能在节点中工作以实现跨平台。谢谢!
【问题讨论】:
标签:
node.js
postgresql
docker
【解决方案1】:
我曾使用is-port-reachable 完成类似的任务。
检查端口是否打开所需要做的只是
await isPortReachable(5432, {host: 'PG_HOST'});
如果您将 PG 绑定到主机上的 5432,则将 PG_HOST 替换为 localhost,否则将其替换为容器的主机名,例如 docker-compose 生成;例如mytestproj_postgresql_1。
另一个我没有使用但看起来很有希望的选项是tcp-port-used。
【解决方案2】:
也许您可以简单地尝试锁定 5432 端口,如果它被使用,那么您可以继续前进。