Murakami
Murakami

Reputation: 3770

Node and Neo4J in docker-compose

I'm trying to run neo4J in causal cluster mode. All is meant to be run in docker with a config inside docker-compose.yml. All instances of the cluster are running, however when I'm trying to connect to neo4J thru Node.js (which of course is also run by the same docker-compose.yml) I'm getting: Neo4j :: executeQuery :: Error Neo4jError: getaddrinfo ENOTFOUND neo4j. How can I make it work, ie. connect from node to neo4J in causal cluster mode inside docker container. Here's my 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

And my 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"]

Upvotes: 0

Views: 680

Answers (1)

Jatish
Jatish

Reputation: 392

1) The application should be attached to same network.

app:
  networks:
    - lan

2) Assuming the network already exists with name "lan" or create a new network

  networks:
    lan:
      driver: bridge

3) deprecated "links" in docker-

  app:
    build:
      dockerfile: Dockerfile.dev
      context: ./
    links:
      - core1
      - core2
      - core3
      - read1

instead of this use - depends_on if required to maintain loading sequence

=======================

Edit Please read comments for the followup questions

Upvotes: 2

Related Questions