我已经构建了一个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:
答案 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。