我启动了docker container:
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,它不是很好:-(
答案 0 :(得分:2)
当您在docker容器中运行node.js应用程序时,它将仅显示您使用-P命令指定的外部端口。带有“-p 3000:3000”的第一个实例将主机端口3000映射到从docker容器中公开的端口3000。这提供了1对1映射,因此任何尝试连接到node.js服务的客户端都可以通过3000的HOST端口执行此操作。
当您执行“-p 8080:3000”时,docker将8080的主机端口映射到node.js容器端口3000.这意味着任何客户端通过主机调用您的node.js应用程序(意味着不在与您的node.js应用程序相同的容器是否来自链接或联网的docker容器)必须通过8080的HOST端口执行此操作。
因此,如果您有外部服务希望在端口3000访问您的node.js,那么它们将无法使用。