我如何告诉我的dockerized Spring Boot Neo4J应用程序与Neo4j服务器对话?

时间:2019-01-18 02:52:12

标签: spring-boot docker spring-data-neo4j

我有一个“即用型” Spring Data Neo4j应用程序,当与在我的盒子上运行的Neo4j服务器通信时,它可以正常工作。 “开箱即用”是指我在应用程序中所做的唯一配置是指定Neo4j的用户名和密码。

该应用程序(使用./gradlew bootRun运行)也可以在Dockerized Neo4j服务器上正常运行。

当我构建此应用程序的docker映像时,无论是否经过dockerized,它都无法连接到Neo4j服务器。

工作时,它说:

  

2019-01-18 12:58:49.311信息18345 --- [restartedMain]驱动程序:为服务器地址localhost:7687创建的直接驱动程序实例1080149308

当它不起作用时,它说:

  

2019-01-18 02:27:53.760信息1 --- [主]驱动程序:为服务器地址localhost:7687创建的直接驱动程序实例707892422

     

2019-01-18 02:27:54.100信息1 --- [main] ConnectionPool:关闭指向本地主机的连接池:7687

     

[...]

     

由以下原因导致:org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannel $ AnnotatedConnectException:连接被拒绝:localhost / 127.0.0.1:7687

我尝试用--link链接两个docker(应用程序和Neo4j docker)。结果相同。

我尝试过组成它们:

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 个答案:

答案 0 :(得分:1)

请参阅此答案,该答案涉及MySQL,但解释了网络问题。

From inside of a Docker container, how do I connect to the localhost of the machine?

最重要的是,如果您使用的是Linux,请添加--network =“ host”;如果您使用的是Windows或Mac,请在Spring Boot配置中将neo4j主机更改为host.docker.internal。要编辑您的application.properties或application.yml文件。

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

有关Spring Boot的Neo4j支持的文档在这里。

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