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

Docker中实现Neo4j与Fake Graph服务目录实时共享问题

解决方案

要让Neo4j的/import目录实时获取fake-graph服务生成的CSV文件,核心是让两个服务共享同一个存储卷,确保文件生成后能立即被Neo4j访问。以下是具体调整方案:

修正后的docker-compose配置

version: "3.8"
services:
  # Neo4j数据库配置
  neo4j:
    container_name: neo4j_social_seed_db 
    image: neo4j:5.15.0-enterprise
    ports:
      - "7474:7474"
      - "7687:7687"
    restart: always
    environment:
      - NEO4J_AUTH=neo4j/neo4jSocial
      - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
      - NEO4J_server.memory.pagecache.size=1G
      - NEO4J_server.directories.import=import
    volumes:
      - ./neo4j/data:/data
      - ./neo4j/conf:/conf
      - ./neo4j/logs:/logs
      - ./neo4j/plugins:/plugins
      # 和fake-graph服务共用同一个共享存储卷
      - shared-import:/import
    networks:
      - net
  # Java后端服务配置(无改动)
  social-seed-app:
    container_name: app_social_seed
    image: social-seed:0.0.1
    build: 
      context: ./backend
    ports:
      - "8081:8081"
    environment:
      - DATABASE_URI=bolt://neo4j:7687
      - DATABASE_USERNAME=neo4j
      - DATABASE_PASSWORD=neo4jSocial
    depends_on:
      - neo4j
    networks:
      - net
  # Fake Graph生成服务配置
  fake-graph:
    container_name: fake_graph_service
    image: python:3.11.2-slim
    build: 
      context: ./fake_graph    
    volumes:
      - ./fake_graph:/app
      # 将共享存储卷挂载到CSV生成的temp目录
      - shared-import:/app/temp
    depends_on:
      - neo4j
    environment:
      - GENERATE_FAKE_GRAPH=true
      - DATABASE_URI=bolt://neo4j:7687
    command: >
      sh -c "if [ '$GENERATE_FAKE_GRAPH' = 'true' ]; then python /app/generate.py; else sleep infinity; fi"    
    networks:
      - net
# 定义全局共享的named volume
volumes:
  shared-import:
networks:
  net:

关键调整说明

  • 改用Docker Named Volume(shared-import):由Docker统一管理存储,避免本地目录挂载带来的权限冲突、路径不匹配问题,能保证文件生成后实时同步到两个服务的对应目录。
  • 对齐文件生成路径:确保Python脚本generate.py把CSV文件写入到/app/temp目录,该目录已挂载共享卷,文件会自动同步到Neo4j的/import目录。
  • 移除原错误挂载:删掉Neo4j配置中./fake-graph/app/temp:/import的本地目录映射,避免依赖本地文件结构引发的同步失效。

额外验证与注意事项

  • 同步验证:启动服务后,可进入fake-graph容器执行touch /app/temp/test.csv,再进入Neo4j容器执行ls /import,检查是否能看到test.csv文件,确认同步生效。
  • 权限兼容(若用本地目录替代named volume):如果选择用./shared-import:/import和./shared-import:/app/temp的本地目录挂载方式,需先执行chmod 777 ./shared-import临时测试权限,生产环境建议设置更严格的用户组权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:47:05