ArangoDB: проблема с входом в систему при подключении с того же сервера, на котором работает Arango - PullRequest
0 голосов
/ 29 сентября 2018

У меня проблема с входом в ArangoDB с того же сервера, на котором работает ArangoDB.

У нас есть работающий контейнер Docker ArangoDB на удаленной машине, IP которого, скажем, 95.123.123.123:8529.При подключении к БД из нашего Dockerized приложения NodeJS, которое работает на моем локальном компьютере, следующим образом:

import { Database } from 'arangojs';

try {
    const db = new Database({
       url: 'http://95.123.123.123:8529', 
    });
    db.useDatabase('flex');
    db.useBasicAuth('root', 'password');
} catch(err) {
   log('database login failed', err);
}

Вход в систему работает очень хорошо.

Однако, когда я собираю нашПриложите приложение, докеризируйте его и разверните на том же сервере, на котором работает ArangoDB, и, используя тот же метод, что и для входа в систему, произойдет сбой входа.После этого наше серверное приложение регистрирует следующую ошибку database login failed, Error: EIO: i/o error, write.

Почему вход в систему работает при подключении с локального компьютера, но не при входе с того же удаленного компьютера, на котором работает Arango?

1 Ответ

0 голосов
/ 01 октября 2018

Наконец-то все заработало.Проблема заключалась в использовании общего IP-адреса вместо внутреннего, когда серверное приложение и arango находились на одном сервере.

Running

docker inspect --format '{{ .NetworkSettings.IPAddress }}' <arangocontainerid>

дает внутренний IP-адрес контейнера:172.17.0.4.А затем заставив приложение сервера NodeJS указывать на tcp://172.17.0.4:8529 вместо публичного IP-адреса arango, оно заработало.

Однако при доступе к БД с локальной машины или любой машины, которая не находится втот же сервер с arango, очевидно, необходимо использовать публичный IP-адрес http://95.123.123.123:8529.

...