기술공부/개발_코드

Neo4j Docker로 띄우기

넹넹선생님 2025. 11. 17. 20:48
728x90
반응형

1. Neo4j Docker 컨테이너 만들고 켜기

1-1. 윈도우에서 준비

  1. Docker Desktop 설치 + 실행 (이미 되어 있으면 넘어가도 됨)
  2. PowerShell 열기 (예: Win + X → “Windows PowerShell”)

1-2. Neo4j용 폴더 먼저 만들기 (호스트 쪽)

호스트(윈도우)에서 네오4j 데이터/로그/CSV를 보관할 폴더를 하나 만들어두면 좋습니다.

mkdir C:\neo4j
mkdir C:\neo4j\data
mkdir C:\neo4j\logs
mkdir C:\neo4j\import

앞으로 CSV 파일은 C:\neo4j\import에 넣으면 컨테이너 안에서 자동으로 보이게 만들 거예요!

1-3. Docker로 Neo4j 컨테이너 생성 + 실행

PowerShell에서 아래 명령 한 번만 실행하면 됨:

docker run -d `
  --name neo4j-ea `
  -p 7474:7474 `
  -p 7687:7687 `
  -v C:\neo4j_docker\data:/data `
  -v C:\neo4j_docker\logs:/logs `
  -v C:\neo4j_docker\import:/var/lib/neo4j/import `
  -v C:\neo4j_docker\plugins:/plugins `
  -e NEO4J_AUTH=neo4j/test1234 `
  neo4j:5

  • --name neo4j-ea : 컨테이너 이름 (마음대로 바꿔도 되지만, 나중에 계속 이 이름 쓸게)
  • -p 7474:7474 : 브라우저용 HTTP 포트
  • -p 7687:7687 : Bolt 포트 (드라이버/클라이언트 연결)
  • -v C:\neo4j\data:/data : DB 데이터 파일(호스트에 영구 저장)
  • -v C:\neo4j\logs:/logs : 로그
  • -v C:\neo4j\import:/var/lib/neo4j/import
     여기가 CSV 넣는 폴더 매핑 (윈도우 ↔ 컨테이너)
  • -e NEO4J_AUTH=neo4j/test1234
    → 아이디: neo4j, 비밀번호: test1234 (<< 만드는 사람 마음대로 설정하면 됩니다.)
  • neo4j:5 : neo4j 5.x 최신 이미지

1-4. 컨테이너가 잘 떴는지 확인

docker ps

예를 들어 이런 식으로 나오면 성공:

CONTAINER ID   IMAGE      NAMES       STATUS
abcd1234efgh   neo4j:5    neo4j-ea    Up 5 seconds

이제 브라우저에서 접속:

http://localhost:7474

  • Username: neo4j
  • Password: test1234 (위에서 설정한 값)

로그인 성공하면 이제 Cypher 입력할 준비 끝 ~ !


2. “컨테이너 파일이 어딨는지” 모를 경우, 터미널로 확인 하기

  1. 컨테이너 안에서의 경로
  2. 호스트(윈도우)에서 내 파일이 연결되는 경로

docker run에서 이걸 이미 명시적으로 설정한 거라, 구조가 딱 고정돼 있어요


2-1. 컨테이너 안에서 파일 경로 (Neo4j 관점)

컨테이너 안에 들어가면:

docker exec -it neo4j-ea bash

들어가서:

ls -R /var/lib/neo4j

주요 경로는:

  • /data : DB 데이터 파일
  • /logs : 로그
  • /var/lib/neo4j/import : CSV 넣는 폴더 (우리가 -v C:\neo4j\import:/var/lib/neo4j/import로 매핑한 곳)

그래서 Neo4j Browser에서 LOAD CSV 쓸 때는 항상:

LOAD CSV WITH HEADERS FROM 'file:///nodes_departments.csv' AS row
...

처럼 file:/// + import 안에 있는 파일 이름만 쓰면 됩니다.
(file:///C:/... 이런 식으로 안 쓰고, 컨테이너 내부 경로 기준인 거예요!)


2-2. 호스트(윈도우)에서 내 CSV 파일 경로

우리가 docker run 할 때:

-v C:\neo4j\import:/var/lib/neo4j/import

이렇게 했으니까,

  • 윈도우에서 실제 폴더: C:\neo4j\import
  • 컨테이너에서 보이는 폴더: /var/lib/neo4j/import

즉,

윈도우에서 C:\neo4j\import에 CSV를 넣으면
컨테이너 안에서는 /var/lib/neo4j/import/파일이름.csv로 자동 연결됨.

그래서 앞으로는:

  1. CSV를 C:\neo4j\import에 복사하고
  2. Neo4j Browser에서이런 식으로 쓰면 된다.
  3. LOAD CSV WITH HEADERS FROM 'file:///nodes_people.csv' AS row ...

2-3. “이 컨테이너는 어떤 폴더를 마운트하고 있지?” 확인하는 법

혹시 나중에 docker run 옵션 기억 안 나면, 아래로 다시 확인할 수 있어:

docker inspect neo4j-ea --format "{{json .Mounts}}" 

예시 출력:

[
{
"Type":"bind",
"Source":"C:\\neo4j\\data",
"Destination":"/data",
...
},
{
"Type":"bind",
"Source":"C:\\neo4j\\import",
"Destination":"/var/lib/neo4j/import",
...
}
]

여기서

  • Source = 윈도우 쪽 경로
  • Destination = 컨테이너 안 경로

이렇게 매칭된다고 보면 됩니다.


3. 요약 – 지금부터 어떻게 하면 되냐면

  1. 이미 했으면 스킵
    • docker run ...으로 neo4j-ea 컨테이너 띄우기
  2. CSV 옮기기
    • C:\neo4j\import 폴더에
      nodes_departments.csv, nodes_people.csv 등 저장
  3. Neo4j Browser 접속
  4. Cypher 실행
    • 스키마 제약 → LOAD CSV  MATCH ... RETURN p로 그래프 보기

 

728x90
반응형