개발/Neo4j

[Neo4j] Neo4j Docker Compose

Jinhwan 2023. 5. 3. 18:43

Neo4j configuration은 진짜 많다. 이는 다음 링크에서 확인할 수 있지만 오늘은 간략한 시작방법만 정리해보고자 한다.

https://neo4j.com/docs/operations-manual/current/docker/ref-settings/

 

Docker-specific configuration settings - Operations Manual

A conversion table for the Neo4j configuration settings to the Docker format.

neo4j.com

docker run

다음 command를 통해 neo4j docker를 run시킬 수 있다.

docker run \
    --name testneo4j \
    -p7474:7474 -p7687:7687 \
    -d \
    -v $HOME/neo4j/data:/data \
    -v $HOME/neo4j/logs:/logs \
    -v $HOME/neo4j/import:/var/lib/neo4j/import \
    -v $HOME/neo4j/plugins:/plugins \
    --env NEO4J_AUTH=neo4j/password \
    neo4j:latest

관련 parameter를 간략하게 설명하자면 아래와 같다.


포트 개방

Neo4j의 default configuration에서 port들은 다음과 같이 설정이 되어진다.

- 7474 for HTTP
- 7473 for HTTPS
- 7687 for Bolt

Neo4j가 제공하는 서비스 중에는 Neo4j Browser와 Bolt라는게 존재한다.

 

- Neo4JjBrowser란 Cypher쿼리를 실행할 수 있는 대화식 쉘과 그래프 시각화를 제공해주는 웹서비스이다.

- Bolt란 Binary Protocol로 Neo4JjGraph DBMS와 Client가 효과적으로 통신을 하기 위해 디자인되었다. 

 

이들을 사용하기 위해 기본적으로 docker를 run할때 port개방이 필요한 것이다.

 

백그라운드 모드 설정

-d 옵션을 통해 docker를 백그라운드 모드로 설정한 것을 알 수 있다.

 

Volume 설정

Volume 옵션은 기본적으로 docker에서 구동되는 service에서 write되는 데이터를 host device에 저장하는 옵션인데 Neo4j 공홈에서는 다음 4가지 항목에 대한 volume설정을 진행했다.

- data 
DB의 데이터가 저장되는 곳이다.

- logs
Neo4j의 log가 기록되는 곳이다.

- import
특정 csv를 불러오고 script를 통해 데이터를 DB상에 저장하고자 한다면 해당 폴더에 저장하게 되면 load되면서 neo4j가 이를 실행시켜서 데이터를 DB상에 반영하게 된다.

- plugin
custom한 plugin 및 다른 plugin을 활용하고자 한다면 plugin폴더에 해당 플러그인을 저장하면 된다. 그외에도 -env명령어를 통해 plugin을 추가하는 것 또한 가능하다.

환경 변수 추가

 Neo4Jj인스턴스를 초기화 할때 사용하게 될 사용자 이름과 비밀번호를 설정하게 된다. 위와 같은 예시로 실행하게 되면 

userId는 neo4j, password는 password로 초기화되게 된다.


Neo4j Web 접속

성공적으로 docker가 실행되고 http://localhost:7474로 접속하게 되면 다음과 같은 화면을 볼 수 있다.

username과 password에 위에서 설정한 값을 넣어주면

다음과 같이 시작화면을 볼 수 있게 된다.

 

단순한 docker의 실행임에도 불구하고 공부할게 산더미처럼 보인다.

 

출처

https://neo4j.com/docs/operations-manual/current/docker/introduction/

 

Introduction - Operations Manual

An introduction to how Neo4j runs in a Docker container.

neo4j.com


긴 글 읽어주셔서 감사합니다.

 

틀린 부분이 있으면 댓글을 달아주시면 감사하겠습니다.

 

📧 : realhwan1202@gmail.com

🔗 : https://github.com/RicardoKim