Я вижу проблему, которую вообще не могу объяснить:
После обновления приложения Meteor до версии 1.9 и, следовательно, Node.js 12, мы также должны переключить docker контейнеры на Node.js 12 основанных контейнеров. В нашем случае мы используем abernix / meteord: node-12-base (git).
После загрузки обновленного приложения мы получаем тайм-аут БД в docker контейнер приложения:
/bundle/bundle/programs/server/node_modules/fibers/future.js:313
throw(ex);
^
MongoTimeoutError: Server selection timed out after 10000 ms
at Timeout._onTimeout (/bundle/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/sdam/topology.js:773:16)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7) {
name: 'MongoTimeoutError',
[Symbol(mongoErrorContextSymbol)]: {}
}
Это происходит со следующими MONGO_URL
:
❌ mongodb: // root: OurPw @ mon go - docker -alias : 27017 / meteor? AuthSource = admin
Как ни странно, когда мы открываем порт 27017 в контейнере MongoDB, следующий MONGO_URL
просто работает:
✔️ mongodb: // root: OurPw @ docker -host : 27017 / meteor? authSource = admin
Теперь я подумал, что у нас проблема docker, но если я присоединяюсь к bash внутри контейнера метаданных Node.js 12, apt установите оболочку MongoDB и попытайтесь подключиться с помощью:
✔️ mon go "mongodb: // root: OurPw @ mon go - docker -alias : 27017 / meteor? AuthSource = admin"
это тоже просто работает.
А теперь я остался без понятия. Я пробовал несколько изображений MongoDB docker между v4.0 и 4.2.3, а также Node.js 12.14 и 12.10. И я также пытался один раз без аутентификации MongoDB просто исключить это как проблему, но результат всегда один и тот же.
Любая идея будет очень цениться, так как я хотел бы избежать необходимости подключения через незащищенный порт и имя хоста docker, потому что он явно подвержен ошибкам ...