Nano Hash - криптовалюты, майнинг, программирование

Как мне сообщить моему докеризированному приложению Spring Boot Neo4J, чтобы он разговаривал с моим сервером Neo4j?

У меня есть готовое приложение Spring Data Neo4j, которое отлично работает при разговоре с сервером Neo4j, запущенным на моем компьютере. Под словом «из коробки» я подразумеваю, что единственная конфигурация, которую я сделал в приложении, - это указание имени пользователя и пароля для Neo4j.

Приложение (запускаемое с помощью ./gradlew bootRun) отлично работает и с докеризованным сервером Neo4j.

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

Когда он работает, он говорит:

2019-01-18 12: 58: 49.311 INFO 18345 --- [restartedMain] Драйвер: Прямой экземпляр драйвера 1080149308 создан для адреса сервера localhost: 7687

Когда он не работает, он говорит:

2019-01-18 02: 27: 53.760 INFO 1 --- [main] Driver: Прямой экземпляр драйвера 707892422, созданный для адреса сервера localhost: 7687

2019-01-18 02: 27: 54.100 INFO 1 --- [main] ConnectionPool: закрытие пула подключений к localhost: 7687

[...]

Вызвано: org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannel $ AnnotatedConnectException: в соединении отказано: localhost / 127.0.0.1: 7687

Я пробовал связать два докера (приложение и докер Neo4j) с помощью --link. Тот же результат.

Я пробовал их сочинять:

version: '3'

services:
  docker-neo:
    image: neo4j:3.5
    ports:
      - 7687:7687
      - 7474:7474

  godojo:
    image: com.greenasjade.j01/j01
    depends_on:
      - docker-neo
    ports:
      - 8081:8081

Никакой радости.

Мне нужно получить докеризованное решение.


Ответы:


1

См. Этот ответ, который относится к MySQL, но объясняет проблему с сетью.

Как мне подключиться к локальному хосту машины изнутри контейнера Docker?

В итоге, если вы используете linux, добавьте --network = "host", а если вы работаете в Windows или Mac, измените хост neo4j в конфигурации Spring Boot на host.docker.internal. Для этого отредактируйте файл application.properties или application.yml.

spring.data.neo4j.uri=bolt://host.docker.internal:7687

Документация по поддержке Neo4j Spring Boot находится здесь.

https://docs.spring.io/spring-boot/docs/2.1.2.RELEASE/reference/htmlsingle/#boot-features-neo4j.

18.01.2019
  • Как изменить хост neo4j в конфигурации Spring Boot на host.docker.internal? Спасибо! 18.01.2019
  • Я обновил свой ответ, включив в него объяснение того, как настроить соединение neo4j. 18.01.2019
  • Спасибо, ссылка очень помогает. Я могу медленно двигаться вперед. Сначала это не удалось, потому что вы должны указать протокол в uri (bolt://host.docker.internal:7687). После этого теперь он терпит неудачу во время создания образа Docker, потому что тест не проходит из-за невозможности подключения к хосту. Я предполагаю, что это потому, что тест выполняется как тест локального компьютера, а не как изображение докера? Вы можете помочь с этим? 18.01.2019
  • Ха -х тест на сборку, и теперь я в деле! Спасибо! 18.01.2019
  • С тех пор я обнаружил, что host.docker.internal - это особенность ОС, что явно не идеально. Есть ли более идеальное решение, которое позволяет переносить разработку на OSX (где оно работает) на некоторые разновидности Linux - например, Amazon EC2 - (где его нет)? 28.01.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..