当使用端口转发运行容器时,没有从node.js代码中获取docker容器的IP地址
Not getting the IP address of the docker container from node.js code when run the container with port forwarding
我编写了一个基本的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"]
相关文章:
- Meteor JS中代码的重复使用部分
- 骨干模型默认值-todos.js示例中不必要的代码
- 为什么indexOf在这个js代码中不起作用
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- js代码从jQuery转换为原生代码
- JS代码中的减号
- 将JS函数传递给Emscripten生成的代码
- 谷歌地图Api和JS代码不工作
- HTML 5 和 3.js 代码不会在网页上显示任何内容
- Node.js:异步代码 + js 闭包的问题
- Chrome 开发者工具 - 控制台.log原生代码 JS
- 为jQuery和KNOCKOUT通用化javascript代码.js成为一个可重用的模块
- .ninnerHtml代码(JS/JQuery)无法识别html表中的动态内容
- 生成唯一的6位代码js
- 我得到了“;赋值中的左侧无效“;在我的代码(JS)中
- 更改代码(JS)中JQuery Mobile Calendar日期的状态
- 如何改进代码JS(Jquery)?一个简单的下拉列表
- 从传输中了解代码.js
- 这段代码(JS)的区别是什么?
- JavaScript倒计时计时器代码[JS]