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