我在 docker 容器中运行了 node.js。当我启动 docker 时,它会调用一个脚本来启动 node.js(或 nodemon)。
在那个 node.js 里面,它做的第一件事就是通过
寻找它的 IPvar ifaces = os.networkInterfaces();
但它并不总是有效,原因让我感到困惑:
- AWS+Docker+手动启动 Node = 是!
- AWS+Docker+autostart nodemon= YES
- AWS+Docker+自动启动 Node =否
因为 1 和 3 使用相同的普通命令,我最好的猜测是 docker 在网络启动之前启动它。因此,我可以让 init 脚本更早地启动网络,或者轮询直到出现某些内容。有人知道启动网络设置 ip 的 linux 命令吗?
最佳答案
我选择只设置 setInterval,直到 os.networkInterfaces 返回一个非空值,在较慢的 AWS 微型实例上,它的时间从 100 毫秒到 500 毫秒左右不等。
关于node.js - Node js os.networkInterfaces() 在通过 AWS 上的 docker 入口点调用时不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31041681/