本文介绍了Docker-compose:使用螺栓从Web容器到neo4j容器的数据库连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用neomodel和django-neomodel与neo4j db进行django项目.我正在尝试使用docker-compose对其进行容器化.当我构建图像时,一切似乎都很好,但是使用螺栓从Web容器到数据库的任何连接都被拒绝.虽然我可以从http上的浏览器访问neo4j db,甚至可以从本地机器上通过螺栓访问.这是我得到的错误:

I'm working on django project with neo4j db using neomodel and django-neomodel.I'm trying to containerize it using docker-compose.when I build the images everything seems fine, but any connection from web container to db using bolt is refused. although I can access the neo4j db from the browser on http, and even from local machine on bolt.this is the error I get:

neo4j.exceptions.ServiceUnavailable:无法建立与('127.0.0.1',7688)的连接(原因111)

我正在使用以下配置:

<pre>Django == 3.1.1
neo4j==4.1.0
neomodel==3.3.0
neobolt==1.7.17 </pre>

这是我的docker-compose文件:

this is my docker-compose file:

version: '3'

services:
  backend:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - neo4j_db
    networks:
      - mynetwork
    links:
      - neo4j_db


  neo4j_db:
    image: neo4j:3.5.17-enterprise
    ports:
      - "7474:7474"
      - "7688:7687"
    expose:
      - 7474
      - 7687
    volumes:
      - ./db/dbms:/data/dbms
    environment:
      - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
      - dbms.connector.bolt.listen_address=:7688
      - dbms.connector.bolt.advertised_address=:7688
    networks:
      - mynetwork
networks:
  mynetwork:
    driver: bridge

以及Django设置中的连接配置:

and here's connection configs in django settings:

NEOMODEL_NEO4J_BOLT_URL = os.environ.get('NEO4J_BOLT_URL', 'bolt://neo4j:pass@[email protected]:7688')

先谢谢了.

推荐答案

  1. 要从一个容器连接到另一个容器(在同一docker-compose项目内),应使用目标容器的容器名称而不是localhost(或127.0.0.1).您的情况是 neo4j_db .

从其他容器连接时,应使用内部端口(在您的情况下为7687).

When connecting from other container you should use the internal port, in your case 7687.

在neo4j服务中, bolt.listen_address 应该是7687而不是7688(老实说,我不确定为什么要更改默认端口).

In the neo4j service, the bolt.listen_address should be 7687 instead of 7688 (honestly, I'm not sure why you are changing the default port).

最后,连接网址应为:

bolt://neo4j:pass@neo4j_db:7687

这篇关于Docker-compose:使用螺栓从Web容器到neo4j容器的数据库连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 11:38