我编写了一个基本的 node.js 代码来获取主机的 IP。代码如下所示:
var express = require('express');
var os = require('os');
var app = express();
var interfaces = os.networkInterfaces();
app.get('/',function(req,res){
var addresses = [];
for (var k in interfaces) {
for (var k2 in interfaces[k]) {
var address = interfaces[k][k2];
if (address.family === 'IPv4' && !address.internal) {
addresses.push(address.address);
}
}
}
res.send("IP address of container : " + addresses);
});
app.listen(3000);
当我在本地机器上运行这段代码时,我会得到正确的 IP
但是当我使用 Docker 文件容器化我的应用程序时:
FROM centos:7
MAINTAINER Vaibhav Jain <vaibhavjain882@gmail.com>
RUN yum -y install curl
RUN curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
RUN yum -y install nodejs
RUN mkdir "/ecsTest"
WORKDIR /ecsTest
ADD node_modules node_modules
ADD app.js package.json ./
CMD ["node","app.js"]
并使用端口转发运行容器 我没有得到 IP
用于运行容器的命令:
docker run -d -p 3000:3000 image_name
感谢任何线索。 谢谢
最佳答案
最后我找到了解决方案。 我尝试了 IP npm 模块并使用了它的函数 address(),它对我来说工作正常。
关于javascript - 使用端口转发运行容器时,无法从 node.js 代码获取 docker 容器的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770050/