Я пытаюсь создать простое приложение nodesjs, которое показывает всю коллекцию из существующей базы данных mongodb, используя docker, я создал приложение nodejs и докертизировал его, я также создал сеть, которая включает в себя контейнеры как приложения nodesjs, так и существующей базы данных mongodb. соединение было успешно установлено, но по какой-то причине я не получил никаких результатов. ниже вы найдете код, который я использовал для создания своего простого приложения:
База данных, к которой я пытаюсь подключиться, называется crawlab_test, а коллекция, которую я пытаюсь показать в приложении nodejs, называется resultnews.
(Когда я получаю доступ к http://localhost: 5001 / , я получаю результат, говорящий Cannot GET /, но когда я пытаюсь получить доступ к http://localhost: 5001 / resultnews , чтобы показать коллекцию используя мое приложение nodejs, я ничего не получаю.)
мой сервер. js file:
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");
});
});
я создал папку с именем sr c, внутри нее я создал два файла:
my 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;
И мое соединение. js file:
// 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;
Вот файл Docker, который я использовал:
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 сеть создает новые для создания сети,
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, но я не могу найти ее. заранее благодарю всех, кто может мне помочь с этой проблемой.