当我在localhost中运行NodeJS TcpProxy(下面的那个)时,它可以工作(我的意思是,当通过浏览器访问localhost时,它是console.logs“嗨”)。但是,当我在其中启动一个具有相同程序的容器时,它不起作用。
TcpProxy代码(index.js):
var net = require('net');
var server = net.createServer(function (socket) {
console.log("Hi");
}).listen(80, '127.0.0.1');
console.log("TCP server accepting connections on port: 80");
Dockerfile:
FROM fedora-nodeJS # Just a custom image with fedora and nodeJS
ADD index.js /
EXPOSE 80
CMD node index
然后我只创建图像(“docker build -t proxy。”)和(“docker run -p 80:80 -P proxy”)。
考虑:
答案 0 :(得分:1)
您的脚本侦听127.0.0.1,这是您的本地环回设备。
在这种情况下,它是容器的环回设备,而不是“你的”本地主机。
我假设expose
和-p
正在向您的主机发布容器的IP地址的端口。不是它的环回设备。
所以你需要听你的外部IP地址。尝试听0.0.0.0