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他们将无法。