несколько версий сервера neo4j на одной машине - PullRequest
3 голосов
/ 25 октября 2019

Я загрузил 2 версии neo4j в Ubuntu 18.04, которые называются "neo4j-community-3.5.12" и "neo4j-community-3.5.8"

Я запускаю 3.5.8 с настройками по умолчанию, которые я вижуэто из интернета. http://localhost:7474/

Для 3.5.12 я изменил файл conf / neo4j.conf и установил некоторые другие номера портов, чтобы они не конфликтовали с номерами по умолчанию.

3.5.8 версия отлично работает на: 7474. Когда я запускаю 3.5.12, в журналах говорится, что он работает, но когда я проверяю из браузера, он не работает. Я пробовал 2 разных настроек порта, ни один не работал. Ниже находится файл журнала. enter image description here

Почему он не работает?

Я вижу, что многие люди рекомендовали использовать докер. Я тоже это попробовал.

Я установил в Docker контейнер с командой sudo docker run --name db1 -p7474:7474 -p7687:7687 -d -v /db1/data:/data -v /db1/logs:/logs -v /db1/conf:/conf --env NEO4J_AUTH=none neo4j

, здесь у меня есть существующая папка / d1 / data / database / graph.db . Когда я захожу на localhost: 7474 , все нормально, он показывает мне существующую базу данных.

Я настраиваю другой докер-контейнер с командой sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:7687 -d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j

здесь я ожидаю увидеть базу данных EMPTY , но я снова вижу уже существующую базу данных. Когда я иду в папку данных внутри db2. Я вижу, что он создал несколько файлов здесь. ПОЧЕМУ я вижу ту же базу данных?

enter image description here

Также обратите внимание, что когда я захожу, чтобы посмотреть базы данных, заголовки веб-страниц, показывающие, что они используют один и тот же порт болта?

можно ли скопировать изображение neo4j и использовать разные изображения для создания контейнеров? Помогает ли это?

Я узнал, что несколько баз данных запущены и активны , но почему-то я не могу открыть вторую через браузер.

1 Ответ

1 голос
/ 08 ноября 2019

Учитывая команды docker-

cmd1: sudo docker run --name db1 -p7474:7474 -p7687:7687 -d -v /db1/data:/data -v /db1/logs:/logs -v /db1/conf:/conf --env NEO4J_AUTH=none neo4j


cmd2: sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:7687 -d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j

Порты контейнера по умолчанию выставляются как один и тот же порт хостадля db1 экземпляра. Принимая во внимание, что для db2 используется серия экземпляров 3xxx.

Для просмотра пользовательского интерфейса, предоставленного neo4j, вы можете использовать либо порт 7474 or 3001, который сопоставлен с 7474 контейнерным портом.


Браузер Neo4j использует значения по умолчанию (из neo4j.conf) для подключения к серверу neo4j. Настройки по умолчанию: bolt://<machineip>:7687, где экземпляр db1 уже выставил порт контейнера на 7687 порт хоста. На порте 7687 обнаружен работающий экземпляр, который инициирует соединение WebSocket для db1 и db2.


Как подключиться к соответствующему экземпляру?

  1. Использовать: :server disconnect и :server connect с соответствующей bolt://<machineip>:port строкой подключения

  2. Сопоставить db1 экземпляр контейнера контейнера болта с другим портом хоста (т. Е. Кроме 7687) Поскольку никакие значения по умолчанию не будут доступны

  3. (Предпочтительнее), установитета же комбинация hostport: containerport, например,

    cmd2: sudo docker run --name db2 -p3001:7474 -p3002:7473 -p3003:3003-d -v /db2/data:/data -v /db2/logs:/logs -v /db2/conf:/conf --env NEO4J_AUTH=none neo4j

    , в этом случае необходимо сопоставить том, чтобы обеспечить neo4j.conf с обновленными значениями как dbms.connector.bolt.listen_address=:3003

...