#Neo4j学習用の環境構築(Neo4j×Jupyter)
非構造化データの可視化、特にグラフ構造をもつデータの分析においては、Neo4j が広く活用されている。ここでは、Docker コンテナを用いて Neo4j と Jupyter を連携させた環境を構築した際の手順とメモを整理する。
Docker コンテナの起動後、分析対象の CSV ファイル(グラフ構造データ)は「neo4j/import/***」ディレクトリ配下に配置する。Neo4jのUI画面「http://localhost:7474」にアクセスでき、Jupyterは「http://localhost:8888」から操作できる。
#ディレクトリ構造#
myneo4j
- neo4j # neo4j側のマウント先ディレクトリ(任意の命名)
- Mount_Directory # Jupyter側のマウント先ディレクトリ(任意の命名)
- .env # neo4j側の環境変数
- docker-compose.yml # 立ち上げ用($Docker-compose up -d)
- Dockerfile # Jupyter側の環境構築
- requirements.txt # Jupyter側で利用するライブラリ
- neo4j_settings.conf # neo4j側の詳細設定
#Docker-compose.yml
services:
datasciense:
container_name: myneo4j
build:
context: .
dockerfile: Dockerfile
ports:
- "8888:8888"
volumes:
- ./Mount_Directory:/Mount_Directory
environment:
- LANG=ja_JP.UTF-8
- TZ=Asia/Tokyo
command: jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.token=''
networks:
- myneo4j
neo4j:
image: neo4j:2025.03.0 # https://tinyurl.com/28nss3lg
container_name: neo4j
ports:
- "7474:7474" # 管理ブラウザ (Neo4j)
- "7687:7687" # Bolt プロトコル (データベース通信:Python, Java等)
# - "7688:7688" # 視覚化ツール(Neo4j Bloom※ライセンス認証が必要)
volumes:
- ./neo4j/data:/data
- ./neo4j/logs:/logs
- ./neo4j/conf:/conf
- ./neo4j/plugins:/plugins # 外部プラグイン用(Neo4j Spatial ..etc)
- ./neo4j/import:/var/lib/neo4j/import # インポート用(CSV や JSON)
environment:
- NEO4J_AUTH=neo4j/${NEO4J_PASSWORD} # 初期パスワード
networks:
- myneo4j
networks:
myneo4j:
driver: bridge
#.env
NEO4J_PASSWORD=password
#Dockerfile
FROM ubuntu:22.04
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
## 必要なパッケージ(apt-get)
RUN apt-get update && apt-get install -yq --no-install-recommends \
python3-pip \
python3-dev \
sudo \
vim \
curl \
wget \
unzip \
tzdata \
git \
# Neo4j 必要パッケージ
apt-transport-https \
ca-certificates \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
## 必要なパッケージ(pip)
COPY requirements.txt .
RUN pip install --upgrade pip && \
pip install --break-system-packages -r requirements.txt
## Neo4j 環境構築(グラフ解析専用)
RUN wget -O - https://debian.neo4j.com/neotechnology.gpg.key | apt-key add - && \
echo 'deb https://debian.neo4j.com stable 5' | tee /etc/apt/sources.list.d/neo4j.list
## カスタム設定ファイル(Neo4j:'neo4j_settings.conf')
COPY ./neo4j_settings.conf /var/lib/neo4j/conf/neo4j_settings.conf
## neo4j.conf にカスタム設定を追加または上書きする
RUN cat /var/lib/neo4j/conf/neo4j_settings.conf >> /var/lib/neo4j/conf/neo4j.conf
## Jupyter NotebookのPDF出力を日本語に対応する
RUN sed -i 's/\\documentclass\[11pt\]{article}/\\documentclass\[xelatex,ja=standard\]{bxjsarticle}/' \
/usr/local/share/jupyter/nbconvert/templates/latex/index.tex.j2
## JupyterLab 作業ディレクトリ
WORKDIR /Mount_Directory
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root", "--LabApp.token=''"]
#requirements.txt
# 共通 (JupyterLab)
jupyterlab==4.2.5
jupyterlab-language-pack-ja-JP
# データサイエンス
numpy==2.1.1
pandas==2.2.2
matplotlib==3.9.2
# neo4j
neo4j==5.28.1
#neo4j_settings.conf
# メモリ設定
dbms.memory.heap.initial_size=1G
dbms.memory.heap.max_size=2G
# CSV のインポート許可設定
dbms.security.allow_csv_import_from_file_urls=true
# APOC プラグインの有効化
dbms.security.procedures.unrestricted=apoc.*
dbms.security.procedures.allowlist=apoc.*,apoc.load.*,apoc.export.*
# APOCファイルのインポート/エクスポートを有効にする
apoc.export.file.enabled=true
apoc.import.file.enabled=true
apoc.import.file.use_neo4j_config=true
# GDS (Graph Data Science) プラグインの有効化
dbms.security.procedures.unrestricted=gds.*
dbms.security.procedures.allowlist=gds.*
コメント(一覧)