【问题标题】:Docker-compose for Neo4j and Python, connection errorNeo4j 和 Python 的 Docker-compose,连接错误
【发布时间】:2021-12-27 23:23:08
【问题描述】:

我使用 docker-compose 捆绑了一个与 Neo4j 数据库交互的 Flask python 应用程序。两个 docker 镜像分别工作正常,但是我无法用 docker-compose 将两者连接起来,当我启动sudo docker-compose up --build 命令时,python 进程开始运行时出现以下错误:

Building backend-service
Sending build context to Docker daemon  39.87MB
Step 1/6 : FROM continuumio/miniconda3
 ---> 67414e5844b6
Step 2/6 : COPY . /usr/src/app
 ---> Using cache
 ---> e72c927b5bc8
Step 3/6 : WORKDIR /usr/src/app
 ---> Using cache
 ---> ab864f3a6042
Step 4/6 : RUN conda env create -f environment.yml
 ---> Using cache
 ---> 4b36888dd60b
Step 5/6 : SHELL ["conda", "run", "-n", "VisualQueries", "/bin/bash", "-c"]
 ---> Using cache
 ---> d25cbc823371
Step 6/6 : RUN python "VisualQueries.py"
 ---> Running in 23a473684c00
ERROR conda.cli.main_run:execute(33): Subprocess for 'conda run ['/bin/bash', '-c', 'python "VisualQueries.py"']' command failed.  (See above for error)
Traceback (most recent call last):
  File "VisualQueries.py", line 28, in <module>
    neo4j_connector = Neo4jDirectConnector()
  File "/usr/src/app/hig/Neo4jDirectConnector.py", line 104, in __init__
    self.find_node_labels()
  File "/usr/src/app/hig/Neo4jDirectConnector.py", line 139, in find_node_labels
    labels = self.query("""CALL db.labels()""")
  File "/usr/src/app/hig/Neo4jDirectConnector.py", line 123, in query
    assert self.driver is not None, "Driver not initialized!"
AssertionError: Driver not initialized!

Failed to create the driver: Cannot resolve address neo4j:7687

The command 'conda run -n VisualQueries /bin/bash -c python "VisualQueries.py"' returned a non-zero code: 1
ERROR: Service 'backend-service' failed to build : Build failed

似乎我无法从 python 进程启动到 Neo4j 数据库的连接。我使用以下命令,neo4j 是 Neo4j 数据库的 docker 服务的名称:

uri = "bolt://neo4j:7687"
driver = GraphDatabase.driver(uri, auth=("neo4j", "neo4j"))

这是我的 docker-compose.yml 文件:

version: '3.7'

services:
  neo4j:
    image: neo4j:4.4.2-community
    hostname: neo4j
    container_name: neo4j
    restart: always
    ports:
      - "7474:7474"
      - "7687:7687"
    volumes:
      - /var/lib/neo4j/plugins/:/plugins
    environment:
      - NEO4J_dbms_memory_pagecache_size=1G
      - NEO4J_dbms.memory.heap.initial_size=1G
      - NEO4J_dbms_memory_heap_max__size=1G
      - NEO4J_AUTH=none
    networks:
      - visual-queries

  backend-service:
      build: ./HistorIGraph
      volumes:
        - ./HistorIGraph:/usr/src/app
      ports:
        - "10090:10090"
      depends_on:
        - neo4j
      networks:
        - visual-queries 

networks:
  visual-queries:
    driver: bridge

【问题讨论】:

    标签: python docker-compose neo4j


    【解决方案1】:

    我认为您缺少links 配置:

    backend-service:
          build: ./HistorIGraph
          volumes:
            - ./HistorIGraph:/usr/src/app
          ports:
            - "10090:10090"
           depends_on:
             - neo4j
           networks:
             - visual-queries
           links:
            - neo4j
    

    编辑:

    你可能是对的,Neo4j 数据库可能还没有在那个时候启动。 首先运行 Neo4j 容器:

    docker-compose up --build neo4j
    

    等待 30 秒左右,让 Neo4j 启动并运行,然后运行:

    docker-compose up --build backend-service
    

    现在后端服务应该可以连接到 Neo4j

    【讨论】:

    • 我添加了链接配置,但我得到了同样的错误。 Neo4j 数据库似乎没有启动,或者连接不工作
    猜你喜欢
    • 2021-07-23
    • 2018-04-30
    • 2023-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多