【发布时间】:2020-08-02 08:08:20
【问题描述】:
我正在尝试制作一个简单的 nodejs 应用程序,它使用 docker 显示现有 mongodb 数据库的全部集合,我创建了 nodejs 应用程序并将其 dockerized,我还创建了一个包含两个 nodejs 应用程序的容器的网络和现有的mongodb数据库。连接已成功建立,但由于某种原因我没有得到任何结果。 你会在下面找到我用来构建我的简单应用程序的代码:
尝试连接的数据库称为 crawlab_test,尝试在 nodejs 应用上显示的集合称为 resultnews。
( 当我访问 http://localhost:5001/ 时,我得到一个结果,说无法获取 / 但是当我尝试访问http://localhost:5001/resultnews 以使用我的nodejs 应用程序显示集合时,我什么也得不到。 )
我的 server.js 文件:
const Resultnews = require("./src/Resultnews.model");
const express = require("express");
const app = express();
const connectDb = require("./src/connection");
const PORT = 5001;
app.get("/resultnews", async (req, res) => {
const resultnews = await resultnews.find();
res.json(resultnews);
});
app.listen(PORT, function () {
console.log(`Listening on ${PORT}`);
connectDb().then(() => {
console.log("MongoDb connected");
});
});
我在其中创建了一个名为 src 的文件夹,我创建了两个文件:
我的 Resultnews.model.js :
const mongoose = require("mongoose");
const resultnewsSchema = new mongoose.Schema({
title: String,
url: String,
clicks: String,
task_id: String,
});
const Resultnews = mongoose.model("Resultnews", resultnewsSchema);
module.exports = Resultnews;
还有我的 connection.js 文件:
// connection.js
const mongoose = require("mongoose");
const User = require("./Resultnews.model");
const connection = "mongodb://localhost:27017/crawlab_test";
const connectDb = () => {
return mongoose.connect(connection, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
};
module.exports = connectDb;
这里是我使用的 Dockerfile:
FROM node:12
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package*.json ./
RUN npm install
# Copy app source code
COPY . .
#Expose port and start application
EXPOSE 5001
CMD [ "npm", "start" ]
我在这个项目上使用的 docker 命令是:
docker 网络创建 enews 创建网络,
docker 网络连接 crawlab_mongo_1 将现有的 mongodb 容器添加到我的网络,
docker build -f Dockerfile -t mydockerapp 。 从我的 nodejs 应用程序构建一个容器,最后
docker run -d --net=enews --name mydockerapp -p 5001:5001 mydockerapp 运行容器并添加到我的网络。
ps:应用程序在使用本地 mongodb 数据库时运行良好,所以我猜测问题出在我的 docker run 命令上,但我似乎找不到它。 提前感谢所有可能帮助我解决此问题的人。
【问题讨论】:
-
你的问题是什么?
-
显然我的问题是为什么它不工作并且没有在我的 nodejs 应用程序上显示集合
-
请分享您用于启动 nodejs 和 mongodb 容器的 docker run 命令。
-
我使用的 docker 命令是:docker network create enews 创建网络,docker network connect crawlab_mongo_1 将现有的 mongodb 容器添加到我的网络,sudo docker build -f Dockerfile -t mydockerapp。从我的 nodejs 应用程序构建一个容器,最后 sudo docker run -d --net=enews --name mydockerapp -p 5001:5001 mydockerapp 运行容器并添加到我的网络
标签: node.js mongodb api docker mongoose