Docker-Compose在主机Nodejs + Express上发布端口

我已经build立了一个docker-compose文件,并且想从我的主机上访问localhost:3000上的nodejs应用程序,但是发布这个端口似乎没有工作。

当我运行组合一切似乎工作正常,我得到确认Listening on port 3000 。 但是,当我从浏览器以及curl去到localhost:3000 ,我得到一个未find或超时响应。

我在这里错过了什么?

我的NodeJS服务器:

 var server = app.listen( process.env.PORT || 3000, function(){ console.log('Listening on port ' + server.address().port); }); 

我的Docker-Compose.yml文件:

 version: "3" services: api: image: baum-test:v0 ports: - "3000:3000" networks: - webnet mongodb: image: mongo:latest ports: - "27017:27017" volumes: - ./data:/data deploy: placement: constraints: [node.role == manager] networks: - webnet networks: webnet: 

如果你正在使用docker stack deploy命令来运行这个命令,那么你可以在你docker-compose.yml "constraints: [node.role == manager]" 。 如果您使用docker-compose up命令获取组合,则使用组合文件的Swarm特性,但使用docker-compose。 完全删除下面的部分

  deploy: placement: constraints: [node.role == manager] 

由于我正在运行用于Windows的docker工具(没有hyper-v的旧版本),我必须手动声明Docker VM Image IP地址,因为它没有绑定到localhost。