docker连接拒绝nodejs应用程序
我启动docker集装箱:
docker run --name node-arasaac -p 3000:3000 juanda/arasaac
而我的node.js应用程序工作正常。
如果我想更改主机端口:
docker run --name node-arasaac -p 8080:3000 juanda/arasaac
网页未加载,浏览器控制台中的日志:
Failed to load resource: net::ERR_CONNECTION_REFUSED http://localhost:3000/app.318b21e9156114a4d93f.js Failed to load resource: net::ERR_CONNECTION_REFUSED
我是否需要在主机和容器中都有相同的端口? 它似乎知道如何解决http:// localhost:8080所以它加载我的网站,但在网页的内部链接到端口3000,它不是那么好:-(
在Docker容器中运行node.js应用程序时,它只会将您用-P命令指定的外部端口暴露出来。 “-p 3000:3000”的第一个实例将主机端口3000映射到端口容器内的端口3000。 这提供了1对1的映射,所以任何试图连接到你的node.js服务的客户端都可以通过3000的HOST端口来完成。
当您执行“-p 8080:3000”时,docker会将8080的主机端口映射到node.js容器端口为3000.这意味着任何客户端通过主机调用您的node.js应用程序(意味着不在同一个容器内作为您的node.js应用程序或不从一个链接或networking的docker容器)将不得不通过8080的HOST端口。
所以如果你有外部服务,希望访问你的node.js在端口3000他们将无法。
- 在一个Docker镜像中运行两个nodejs应用程序
- 使用Docker在Synology NAS中设置MongoDB
- “本地主机没有发送数据。 ERR_EMPTY_RESPONSE“和”curl:(52)来自服务器的空回复“
- Docker构build,如何显示进度?
- dockerfile中的node.js无法通过mongoose连接到mongolabs:getaddrinfo ESRCH
- Docker SIGTERM在使用标志启动时不会被传递到node.js / coffee应用程序
- 在docker容器内重新加载代码。 PM2。 节点js
- docker日志不会logging分离的exec
- 如何将Docker容器端口暴露给另一个容器