用mongodb,node和postman使用docker-compose的正确方法是什么?

我知道这个问题已经被问到过,但是我已经阅读了很多答案,做了大量的search,并且似乎无法弄清楚发生了什么。

我想要使​​用节点和使用docker的mongodb来制作待办事项列表应用程序。 我有一个像这样的docker-compose文件

local: image: local ports: - "3000:3000" volumes: - ./:/project links: - mongo # runs nodemon server.js entrypoint: ["npm", "run", "start"] mongo: image: mongo:latest ports: - "27017:27017" volumes: - ./data/db:/data/db entrypoint: ["mongod", "--port", "27017"] 

我非常小心地确保我连接mongoose,就像这样mongoose.createConnection('mongodb://mongo:27017'); 而不是本地主机。 但是,当我尝试POST到我的/任务路线邮递员没有任何反应。 整个server.js文件是

 const express = require('express'); const app = express(); const port = process.env.PORT || 3000; const mongoose = require('mongoose'); const Task = require('./api/models/todoListModel'); const bodyParser = require('body-parser'); mongoose.Promise = global.Promise; mongoose.createConnection('mongodb://mongo:27017'); // I've also tried mongodb://mongo/local:27017 and /project just in case... app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); const routes = require('./api/routes/todoListRoutes'); routes(app); app.get('/', (req, res) => { res.json({ message: 'At least this works...' }); }); app.listen(port); console.log(`listening on port ${port}`); 

谢谢你尽你所能的帮助!

在服务器运行之前,你必须确定mongo已经启动并正在运行。 目前mongo可以在从服务器连接时开始。 有几种方法来解决这个问题。 也许一个shell脚本在启动你的npm进程之前等待27017端口。 看看这个问题,以供参考如何等待与netcat的开放端口? 。 而这个: https : //docs.docker.com/compose/startup-order/

另外我没有看到您的服务器代码上的POST路由