Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js docker连接拒绝nodejs应用程序_Node.js_Docker - Fatal编程技术网

Node.js docker连接拒绝nodejs应用程序

Node.js docker连接拒绝nodejs应用程序,node.js,docker,Node.js,Docker,我启动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

我启动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

主机和容器中是否需要具有相同的端口?它似乎知道如何解析以便加载我的网站,但网页中的内部链接转到端口3000,效果不太好:-(

当您在docker容器中运行node.js应用程序时,它只会在外部公开您使用-p命令指定的端口。第一个实例为“-p 3000:3000”,将主机端口3000映射到从docker容器中公开的端口3000。这提供了1对1映射,因此任何试图连接到node.js服务的客户端都可以通过主机端口3000进行映射

当您执行“-p 8080:3000”时,docker会将8080的主机端口映射到3000的node.js容器端口。这意味着任何通过主机调用node.js应用程序的客户端(意味着不在与node.js应用程序相同的容器内,也不来自链接或网络化的docker容器)都必须通过8080的主机端口执行此操作


因此,如果您的外部服务希望访问端口3000上的node.js,那么它们将无法访问。

不确定您的要求是什么,但不需要主机和容器具有相同的端口。如果您的内部链接访问端口3000上的nodejs应用程序,如果您在docker网络上的容器中运行它们,它们可以继续这样做。这就是你的意思吗?当我更改端口时,web内部链接(总是指向localhost:3000)不起作用。docker网络?我需要一些我不知道的额外配置吗?我以为它是开箱即用的…当我的浏览器尝试在localhost:3000中加载资产时,它不能这样做,因为它尝试在localhost机器中加载,而不是在容器中。我的意思是,它用于加载8080到3000的请求,但当请求来自3000时,它会保留在主机中。不确定您的用例是否适合,但通常您希望对资产使用相对路径,而不是指定这样的特定端口。但同样不确定您的用例。