【发布时间】:2017-07-25 12:23:51
【问题描述】:
我已经构建了一个 docker-compose 文件并想从我的主机访问我在 localhost:3000 上的 nodejs 应用程序,但发布端口似乎不起作用。
当我运行 compose-up 时,一切似乎都运行良好,我得到了确认 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:
【问题讨论】:
-
你有“约束:[node.role == manager]”你是在使用 docker swarm 还是只是从某个地方复制粘贴?你能试试 0.0.0.0 代替 localhost 吗?
-
我正在测试 swarm 的功能,但忘记从我的撰写文件中删除它。我会尝试看看是否有帮助。
-
您的撰写文件看起来不错。我想不出它不应该工作的另一个原因
-
嗯,我试着冲进容器并从那里运行 curl,它似乎工作得很好,所以我不确定这里发生了什么
-
docker ps 返回什么?它是否列出了发布的端口?
标签: node.js express docker docker-compose