Docker-Compose主机计算机Nodejs + Express上的发布端口

时间:2017-07-25 12:23:52

标签: node.js express docker docker-compose

我已经构建了一个docker-compose文件,并希望从我的主机访问localhost:3000上的nodejs应用程序,但发布端口似乎不起作用。

当我运行撰写时,一切似乎都运行正常,我得到确认Listening on port 3000。但是,当我从浏览器以及localhost:3000转到curl时,我收到了未找到或超时响应。

我在这里错过了什么吗?

我的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:

2 个答案:

答案 0 :(得分:0)

如果您使用docker stack deploy命令运行此命令,则"constraints: [node.role == manager]"中可以docker-compose.yml。如果您使用docker-compose up命令来获取组合,那么您使用的是组合文件的Swarm功能,但是在docker-compose上。完全删除以下部分

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

答案 1 :(得分:0)

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