javascript - 使用端口转发运行容器时,无法从 node.js 代码获取 docker 容器的 IP 地址

标签 javascript linux node.js docker dockerfile

我编写了一个基本的 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/

相关文章:

mysql - Node.js - MySQL 中的 "PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR"

node.js - 云函数中从firebase实时数据库查询数据

javascript - 如何使用本地网络中的 Node 后端访问我的 React 应用程序?

linux - 是否每次调用 write 都会切换到内核模式?

javascript - Express/Node.js |从 glob 调用中生成新的 JSON 对象

MySQL 表数据目录大于从 information_schema.tables 计算的大小

c - RRD具有高精度?

javascript - 使用 JavaScript 正则表达式去除包含括号的子字符串

javascript - 通过透明度提高 Canvas 性能

javascript - 获取两个值之间的数字