I have a Node.js application that connects to neo4j. Running it normally works well, I'm able to connect. However, when I run it inside Docker I run into this error:
Neo4jError: Failed to connect to server. Please ensure that your database is listening on the correct host and port and that you have compatible encryption settings both on Neo4j server and driver. Note that the default encryption setting has changed in Neo4j 4.0. Caused by: connect ECONNREFUSED 127.0.0.1:7687
at newError (/usr/src/app/node_modules/neo4j-driver/lib/error.js:75:10)
at NodeChannel._handleConnectionError (/usr/src/app/node_modules/neo4j-driver/lib/internal/node/node-channel.js:229:41)
at Socket.emit (events.js:310:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
I'm using neo4j-driver v4.0.2, and Neo4j 4.0.3.
I created a repo to reproduce the issue: GitHub - Layvier/test_neo4j
Am I missing something regarding Docker networking ?
I found this related issue with the python driver: Getting error - ServiceUnavailable: Failed to establish connection to ('127.0.0.1', 7687) (reason 61) · Issue #251 · neo4j/neo4j-python-driver · GitHub
Thanks for your help !
Where is the neo4j instance?? is this in the same container?? If neo4j is outside, the container can´t see its local server (because the container is isolate from the world, is similar to VM), you should have a neo4j server with public and visible IP. You can use neo4j sandbox if you want to test neo4j.
@Layvier, could you solve your issue ?
I'm also unable to connect to my neo4j container from another container, while I have no issues connecting to the same neo4j container from my system cypher-shell or neo4j desktop.
- 57473:7473 # HTTPS
- 57474:7474 # HTTP
- 57687:7687 # BOLT
- NEO4J_URI=bolt://neo4j:57687 # https://neo4j.com/docs/driver-manual/current/client-applications/#driver-configuration-examples
When querying my API server (apollo), I get
api_1 | Failed to connect to server. Please ensure that your database is listening on the correct host and port and that you have compatible encryption settings both on Neo4j server and driver. Note that the default encryption setting has changed in Neo4j 4.0. Caused by: connect ECONNREFUSED 172.19.0.2:57687
- I believe host and port to be fine
- scheme is good, connection without encryption
@AdrienLemaire Hey, for me it was a host issue, I got the solution here: node.js - Unable to connect to neo4j from a docker instance - Stack Overflow.
I'm not sure how it works with docker compose :/
Thanks for the reply. Docker-compose already does host mapping, so my issue is different, sorry for posting in the wrong place. I created an issue at ECONNREFUSED when docker instance queries docker neo4j · Issue #267 · neo4j/docker-neo4j · GitHub