Я тестировал вещи для себя, и у меня возникла проблема: при попытке подключить узел express контейнер (приложение) к контейнеру mon go (база данных), я могу подключиться к mon go из MongoCompose, если я подключиться к localhost:27017
, но не могу в контейнер узла express с конфигурационным URL mon goose для подключения базы данных следующим образом 'mongodb://localhost:27017/dbtest'
.
Поэтому я смотрю на SO некоторые решения (например, this ) и отвечает на то, что я вижу вместо 'mongodb://localhost:27017/dbtest'
Мне нужно написать имя моего контейнера 'mongodb://mymongo:27017/dbtest'
, но для меня это не сработало, получаю только ошибку ECONNREFUSED.
Контейнеры были в этой же сети находится мой dockerfile и docker -композитный файл.
Dockerfile
#node 8.16.2
FROM node:8.16.2
COPY . /app
WORKDIR /app
RUN npm install
EXPOSE 3000
CMD ["npm","start"]
docker -compose.yaml
version: "3.7"
services:
db:
image: mongo
ports:
- 27017:27017
networks:
- testing
app:
build:
context: .
dockerfile: Dockerfile
networks:
- testing
networks:
testing:
I решено эта проблема, как эта mongodb://172.17.0.1:27017/dbtest
, где 172.17.0.1
- это шлюз сети, являющейся контейнерами.
Может кто-нибудь объяснить это поведение, и если это правильный ? Платформа Linux