我在节点服务器和server.js中运行了角度应用程序,我已经指定了app.listen(8084,localhost)
。因此,当我在docker容器中运行npm start并尝试在docker run中运行-p 8084:8084
时,即使我的容器curl localhost:8084
中的curl命令给了我正确的结果,也什么也没得到。
因此,我更改了app.listen(8084)
,然后-p 8084:8084
开始工作。我不确定为什么吗?
答案 0 :(得分:2)
打开套接字时,需要将其绑定到系统中的某些接口。有预定义的值:
0.0.0.0
-所有界面,您可以从任何界面访问服务
locahost
,127.0.0.1
-本地绑定。这意味着无法从oustide获得服务-这就是您的情况。
您还可以指定要绑定到的特定接口IP地址。
启动容器时,默认情况下为docker start default bridge network
,因此要将容器放入单独的网络并要访问它,您需要允许容器中的传入远程连接。
答案 1 :(得分:0)
您将服务与localhost绑定到一个容器中,因此在容器外部无法进行通信。节点服务器的本地主机与容器的本地主机不同。