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。