Я пытаюсь подключить JS-приложение моего узла к моей mongoDB без использования IP-адреса.Стратегия, которую я прочитал, заключается в том, что оба контейнера должны быть в одной сети.
Приложение JS моего узла выглядит следующим образом:
var express = require('express');
var app = express();
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var PORT = 4000;
// REQUIRE MIDDLEWARE
var instantMongoCrud = require('express-mongo-crud'); // require the module
mongoose.connect('localhost:27017/user');
var options = { //specify options
host: `localhost:${PORT}`
}
//USE AS MIDDLEWARE
app.use(bodyParser.json()); // add body parser
app.use(instantMongoCrud(options)); // use as middleware
app.listen(PORT, ()=>{
console.log('started');
})
Я запустил базу данных mongodb и подключил ее к сети, называемой nodenetwork.
Затем я выполнил сборку моего приложения Docker, как показано ниже:
docker build -t sampleapp:v1 . && docker run --net container:mongodb sampleapp:v1
приложение работает правильно с вывода консоли.Однако я не могу получить к нему доступ через свой браузер.
Я понимаю, что это потому, что я должен выставить порт 4000, когда я выполняю докер, как я делал раньше.
Однако проблема заключается в том, что когда я пытался работать таким образом, вместо этого
docker build -t sampleapp:v1 . && docker run -p 4000:4000 --net container:mongodb sampleapp:v1
он выдает меня: docker: Ответ об ошибке от демона: конфликтующие опции: публикация порта и тип сети контейнераmode.
Как так, мой вопрос, как мне изменить эту команду и это лучший способ?