Node.js docker compose中的Node和Neo4J
我正在尝试以因果集群模式运行neo4J。这一切都是为了在docker中运行,在docker compose.yml中有一个配置。但是,当我试图通过Node.js连接到neo4J时(当然也由相同的Node.js docker compose中的Node和Neo4J,node.js,docker,neo4j,Node.js,Docker,Neo4j,我正在尝试以因果集群模式运行neo4J。这一切都是为了在docker中运行,在docker compose.yml中有一个配置。但是,当我试图通过Node.js连接到neo4J时(当然也由相同的docker compose.yml运行),我得到:neo4J::executeQuery::Error Neo4jError:getaddrinfo ENOTFOUND neo4J。如何使其工作,即在docker容器内以因果集群模式从节点连接到neo4J。这是我的docker compose.yml:
docker compose.yml
运行),我得到:neo4J::executeQuery::Error Neo4jError:getaddrinfo ENOTFOUND neo4J
。如何使其工作,即在docker容器内以因果集群模式从节点连接到neo4J。这是我的docker compose.yml
:
version: '3'
networks:
lan:
services:
app:
build:
dockerfile: Dockerfile.dev
context: ./
links:
- core1
- core2
- core3
- read1
volumes:
- /app/node_modules
- ./:/app
ports:
- '3000:3000'
environment:
- REACT_APP_NEO4J_HOST=bolt://neo4j
core1:
image: neo4j:3.5.11-enterprise
networks:
- lan
ports:
- 7474:7474
- 6477:6477
- 7687:7687
volumes:
- $HOME/neo4j/neo4j-core1/conf:/conf
- $HOME/neo4j/neo4j-core1/data:/data
- $HOME/neo4j/neo4j-core1/logs:/logs
- $HOME/neo4j/neo4j-core1/plugins:/plugins
environment:
- REACT_APP_NEO4J_HOST=bolt://neo4j
- NEO4J_AUTH=neo4j/changeme
- NEO4J_dbms_mode=CORE
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
- NEO4J_causal__clustering_minimum__core__cluster__size__at__formation=3
- NEO4J_causal__clustering_minimum__core__cluster__size__at__runtime=3
- NEO4J_causal__clustering_initial__discovery__members=core1:5000,core2:5000,core3:5000
- NEO4J_dbms_connector_http_listen__address=:7474
- NEO4J_dbms_connector_https_listen__address=:6477
- NEO4J_dbms_connector_bolt_listen__address=:7687
core2:
image: neo4j:3.5.11-enterprise
networks:
- lan
ports:
- 7475:7475
- 6478:6478
- 7688:7688
volumes:
- $HOME/neo4j/neo4j-core2/conf:/conf
- $HOME/neo4j/neo4j-core2/data:/data
- $HOME/neo4j/neo4j-core2/logs:/logs
- $HOME/neo4j/neo4j-core1/plugins:/plugins
environment:
- REACT_APP_NEO4J_HOST=bolt://neo4j
- NEO4J_AUTH=neo4j/changeme
- NEO4J_dbms_mode=CORE
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
- NEO4J_causal__clustering_minimum__core__cluster__size__at__formation=3
- NEO4J_causal__clustering_minimum__core__cluster__size__at__runtime=3
- NEO4J_causal__clustering_initial__discovery__members=core1:5000,core2:5000,core3:5000
- NEO4J_dbms_connector_http_listen__address=:7475
- NEO4J_dbms_connector_https_listen__address=:6478
- NEO4J_dbms_connector_bolt_listen__address=:7688
core3:
image: neo4j:3.5.11-enterprise
networks:
- lan
ports:
- 7476:7476
- 6479:6479
- 7689:7689
volumes:
- $HOME/neo4j/neo4j-core3/conf:/conf
- $HOME/neo4j/neo4j-core3/data:/data
- $HOME/neo4j/neo4j-core3/logs:/logs
- $HOME/neo4j/neo4j-core1/plugins:/plugins
environment:
- REACT_APP_NEO4J_HOST=bolt://neo4j
- NEO4J_AUTH=neo4j/changeme
- NEO4J_dbms_mode=CORE
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
- NEO4J_causal__clustering_minimum__core__cluster__size__at__formation=3
- NEO4J_causal__clustering_minimum__core__cluster__size__at__runtime=3
- NEO4J_causal__clustering_initial__discovery__members=core1:5000,core2:5000,core3:5000
- NEO4J_dbms_connector_http_listen__address=:7476
- NEO4J_dbms_connector_https_listen__address=:6479
- NEO4J_dbms_connector_bolt_listen__address=:7689
read1:
image: neo4j:3.5.11-enterprise
networks:
- lan
ports:
- 7477:7477
- 6480:6480
- 7690:7690
volumes:
- $HOME/neo4j/neo4j-read1/conf:/conf
- $HOME/neo4j/neo4j-read1/data:/data
- $HOME/neo4j/neo4j-read1/logs:/logs
- $HOME/neo4j/neo4j-core1/plugins:/plugins
environment:
- REACT_APP_NEO4J_HOST=bolt://neo4j
- NEO4J_AUTH=neo4j/changeme
- NEO4J_dbms_mode=READ_REPLICA
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
- NEO4J_causalClustering_initialDiscoveryMembers=core1:5000,core2:5000,core3:5000
- NEO4J_dbms_connector_http_listen__address=:7477
- NEO4J_dbms_connector_https_listen__address=:6480
- NEO4J_dbms_connector_bolt_listen__address=:7690
和我的DockerFile.dev:
FROM node:alpine
WORKDIR '/app'
RUN apk update && apk add yarn python g++ make && rm -rf /var/cache/apk/*
COPY ./package.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
1) 应用程序应连接到同一网络
app:
networks:
- lan
2) 假设已存在名为“lan”的网络,或创建一个新网络
networks:
lan:
driver: bridge
3) 已弃用docker中的“链接”-
app:
build:
dockerfile: Dockerfile.dev
context: ./
links:
- core1
- core2
- core3
- read1
代替此用途-如果需要保持加载顺序
=======================
编辑请阅读后续问题的评论1)应用程序应连接到同一网络
app:
networks:
- lan
2) 假设已存在名为“lan”的网络,或创建一个新网络
networks:
lan:
driver: bridge
3) 已弃用docker中的“链接”-
app:
build:
dockerfile: Dockerfile.dev
context: ./
links:
- core1
- core2
- core3
- read1
代替此用途-如果需要保持加载顺序
=======================
编辑请阅读后续问题的评论谢谢您的回答,但由于某些原因,错误仍然存在。我不确定在docker中连接到neo4j db的正确URI是什么(我把它保存在环境中,-REACT_APP_NEO4J_HOST=bolt://neo4j,但我猜这是错误的是的,您必须提到
hostname:neo4j
来解析DNSneo4j
。当连接到集群时,应该使用bolt+路由://:
。所以bolt+路由对我来说是正确的,但是当在本地计算机上启动时,这个uri到底应该是什么样子呢我应该使用t端口,因为每个实例都在单独的端口上?我应该连接到哪个端口?这是一个很好的后续问题。您应该使用主机:端口组合的核心服务器,而不是读取副本。如何识别cor/master/leaderNEO4J_dbms_mode=core
感谢您的回答,但由于某些原因,错误仍然发生。我不确定是什么是连接到docker内部neo4j db的正确URI(我把它保存在环境中,-REACT_APP_NEO4J_HOST=bolt://neo4j,但我猜这是错误的是的,您必须提到hostname:neo4j
来解析DNSneo4j
。当连接到集群时,应该使用bolt+路由://:
。所以bolt+路由对我来说是正确的,但是当在本地计算机上启动时,这个uri到底应该是什么样子呢我应该使用t端口,因为每个实例都在单独的端口上?我应该连接到哪个端口?这是一个很好的后续问题。你应该使用主机:端口组合的核心服务器,而不是读取副本。如何识别cor/master/leaderNEO4J_dbms_mode=core