You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Docker容器连接Neo4j报错:地址格式无效的解决方法

问题分析

你的核心问题是容器化后Spring Neo4j连接地址被自动追加了/neo4j后缀,导致Neo4j Driver报错地址格式无效。本地运行正常是因为Spring Boot未对localhost的URI做自动追加操作,而容器环境下触发了默认数据库名称的拼接逻辑。

解决步骤

1. 修正依赖配置

手动指定spring-data-neo4j版本可能导致与Neo4j Driver版本不兼容,换成Spring Boot官方starter让依赖管理自动匹配兼容版本:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
</dependency>

2. 调整Neo4j连接配置

避免Spring Boot自动向URI追加数据库名称,二选一即可:

  • 方式一:清空默认数据库名称
    在配置文件或环境变量中设置:

    # application.properties
    spring.neo4j.database=
    

    对应环境变量:SPRING_NEO4J_DATABASE=

  • 方式二:直接在URI中指定数据库
    将环境变量的URI改为包含默认数据库的格式:

    SPRING_NEO4J_URI=bolt://registration_db:7687/neo4j
    

3. 确保容器网络连通性

必须将Spring应用容器和Neo4j容器放入同一个Docker网络,否则registration_db主机名无法被解析:

# 创建自定义网络
docker network create neo4j-network
# 启动Neo4j容器
docker run -d --name registration_db --network neo4j-network -e NEO4J_AUTH=neo4j/your_password neo4j:latest
# 启动Spring应用容器
docker run -d --name spring-app --network neo4j-network -e SPRING_NEO4J_URI=bolt://registration_db:7687/neo4j -e SPRING_NEO4J_AUTH=neo4j/your_password your_app_image

内容的提问来源于stack exchange,提问作者kat_o4ka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:55:12