当使用端口转发运行容器时,没有从node.js代码中获取docker容器的IP地址

Not getting the IP address of the docker container from node.js code when run the container with port forwarding

本文关键字:代码 js node 获取 地址 IP docker 转发 运行      更新时间:2023-09-26

我编写了一个基本的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(),它对我来说很好。

您需要在Dockerfile:中公开端口3000

EXPOSE  3000
CMD ["node","app.js"]