2016-05-05 6 views
0

У меня есть три контейнера, паутина, отдых и дБ. Я хочу, чтобы rest (nodejs) мог получить доступ к db (mongodb).Как работает ссылка на докер?

Мой докер-compose.yml:

version: '2' 
services: 
web: 
    build: front 
    depends_on: 
    - db 
    - rest 
db: 
    build: backend/mongodb 
    volumes: 
    - /src/docker/mongodb:/var/lib/mongodb 
    restart: always 
rest: 
    build: backend/rest 
    restart: always 
    links: 
    - db:database 

В моей программе nodejs:

MongoClient.connect("mongodb://database:27017/mytest", function (err, db) { 
... 

Однако мой Монго клиент не может достигнуть базы данных и продолжает перезагрузки ...

Что я делаю неправильно?

ответ

0

Контейнеры будут доступны по их названиям. Таким образом, в вашем случае, вы должны использовать имя из db службы, которая db:

MongoClient.connect("mongodb://db:27017/mytest", function (err, db) {

0

Предполагая, что ваше приложение node.js ваш web сервис? Веб может получить доступ только к службе db, используя имя хоста db. Однако сервис rest может получить к нему доступ, используя db или database, потому что вы дали ему псевдоним ссылки.

Вы можете повторить этот links: псевдоним в определении web службы, или изменить строку соединения использовать db вместо database.

Это должно работать прямо сейчас:

MongoClient.connect("mongodb://db:27017/mytest", function (err, ndb) { 

Или со ссылкой добавил:

MongoClient.connect("mongodb://database:27017/mytest", function (err, db) { 
Смежные вопросы