不能用docker-compose和nodejs打开网站

每一个人。 我有docker-与nodejs组成。

web: ... ports: - "3030:3000" .... 

app.js:

  ... server.listen(8000, function(){ console.log('test'); }); 

我们可以看到端口是8000。

我做docker-compose up和terminal有'testing'

但是http:// MY_IP:8000没有“无法访问网站”

我开始用docker-compose run web npm start server started,但是我也得到了这个错误。

如何使用docker-compose启动nodejs?

PS:如果我安装npm install WITHOUT docker-compose命令。 我没有这个问题

在您docker-compose.yml您要将端口3030绑定到您的主机,并在您的容器中绑定3000

docker-compose.yml的configuration应该是:

 web: ... ports: - "8000:8000" ... 

此外,我认为你也应该将容器内的应用程序绑定到0.0.0.0以减轻开发,一旦移到生产就可以完成额外的设置。 app.js

 server.listen('8000', '0.0.0.0', function(){ console.log('test'); }); 

您无法访问http:// YOUR_IP:8000,因为您没有将容器端口(8000)绑定到主机端口(8000)。 将此添加到您docker-compose.yml

 web: ... ports: - "3030:3000" - "8000:8000" .... 

只需在docker-compose.yml文件中将“3030:3000”更改为“8000:8000”即可