JupyterLab×Neo4j

<タイトル> JupyterLab×Neo4j

2025年06月11日 2025年06月12日 カテゴリ: 環境構築

#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.*

#参考URL#

  1. https://tinyurl.com/2333j78k
  2. https://tinyurl.com/28nss3lg
  3. https://tinyurl.com/293cbx57


コメント(一覧)

コメント(入力画面)

空港MAP(#WIKI)
※現在の時刻 週間天気予報 (東京)
バックナンバー(年別)