Я получаю ошибки при подключении к mongodb, работающему в док-контейнере, из моего приложения Nodejs, запущенного в AWS SAM (раньше говорилось "на моем хосте").
Я запускаю mongodb как:
$ docker run --name mongo-myapp --rm -d -p 27018:27017 mongo
и я вижу результаты:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab8248d17d2d mongo "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:27018->27017/tcp mongo-myapp
~~ Я могу успешно подключаться и вставлять данные с помощью клиентов, работающих на моем хосте, таких как MongoDB Compass и Robo 3T CommunityРедакция с указанием порта 27018. ~~
Когда я пытаюсь подключиться с помощью этого кода, работающего на моем хосте (не в контейнере Docker):
const { MongoClient } = require('mongodb');
const mongoConnection = 'mongodb://127.0.0.1:27018';
MongoClient.connect(mongoConnection, (err, db) => {
if (err) {
console.error("Failed to connect to mongodb server", err);
return reject(err);
}
console.log("Connected successfully to mongodb server");
resolve(db);
});
Я всегда вижуошибка:
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27018
Я получаю ту же ошибку, используя другой порт со всеми шагами, как 27017.
ОБНОВЛЕНИЕ
Оказывается, мой код не работал на хосте.Он работал в другом докере.Я не знал, что AWS SAM поместит мой код в докер-контейнер, поэтому я не упомянул его в исходном вопросе.
Теперь я запускаю свой код с mocha test
, чтобы убедиться, что онбудет работать на моем хосте, и он без проблем подключится к базе данных mongo.
Когда я запустил локальный сервер с помощью AWS SAM start-api , у меня возникли проблемы.Возможно, решением будет указать сеть при запуске контейнера mongo, а также среду SAM.