【发布时间】:2021-04-01 22:41:38
【问题描述】:
我正在创建一个 Docker 文件。
FROM node:12
WORKDIR /home/node/
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8888
CMD [ "node", "server.js" ]
之后,创建一个 dockercompose.yml 文件。
version: '2'
services:
api:
container_name: api_node
restart: always
build:
dockerfile: ./Dockerfile
context: .
volumes:
- .:/home/node
- /home/node/node_modules
ports:
- 3000:3000
command: node server.js
mongo:
container_name: mongo
image: mongo
volumes:
- ./volumes/db:/data/db
ports:
- "27017:27017"
运行 docker-compose up 时,docker 会创建容器,但我无法在 mongodb 中保存模式。 出现错误:
MongooseError:操作
users.insertOne()缓冲超时后 10000毫秒在超时。 (/home/node/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:184:20)
在 listOnTimeout (internal/timers.js:554:17)
在 processTimers (internal/timers.js:497:7)
我的 server.js
// Constants
const PORT = 3000;
const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const app = express();
app.use(express.static("public"));
app.use(bodyParser.json());
mongoose.connect = ("mongodb://mongo:27017/userDB", { useNewUrlParser: true, useUnifiedTopology: true });
const userSchema = {
username: String,
email: String
};
const User = new mongoose.model("User", userSchema);
app.get("/", function (req, res) {
res.render("home")
});
app.get("/register", function (req, res) {
console.log('deu certo');
});
app.post("/register", function (req, res) {
console.dir(req.body);
const newUser = new User({
username: req.body.username,
email: req.body.email
});
console.log(newUser);
newUser.save(function (err) {
if (err) {
console.log(err);
} else {
console.log('Deu certo');
}
});
});
app.listen(PORT, function () {
console.log(`Running on http://localhost:${PORT}`);
});
我已经做了一些更改,但我仍然不知道发生了什么。
【问题讨论】:
-
本地可以用吗?
-
将mongo服务链接到app服务。