Neo4j の起動

Neo4j の起動

pythonでneo4j を使えるようにする

Llama 3.2とNeo4jでローカルGraphRAG環境を構築

これをやる場合
Neo4jのCypherクエリ言語を拡張するライブラリapoc-coreを使用する

Dockerコンテナを利用したNeo4jの環境構築とAPOCのインストール手順
によれば
コンテナで起動したNeo4jにはAPOCのバイナリが含まれていないため、手動でインストールする必要がある

APOC (Awesome Procedures On Cypher) は、Neo4jにおける拡張機能の一つである。
データ操作、外部データの取り込み、ランダムグラフ生成など、Neo4jの基本機能を拡張するプロシージャを提供する。

製品の標準機能として取り込まれた拡張機能も多々あるようで、
とりあえずコアのAPOC入れておいたほうがいい、ということらしい

docker exec -it neo4j-neo4j-1 neo4j --version

を実行したけど

Error response from daemon: No such container: neo4j-neo4j-1

となった

コンテナが起動していないと意味がない

まずはneo4jを起動する

Docker-compose を使う方法を採用

対応ディレクトリが必要なので

mkdir -p ./data ./logs ./conf ./plugins
chmod 755 ./data ./logs ./conf ./plugins

で作成する

次に

touch docker-compose.yml

でファイルを作成


dservices:
  neo4j:
    image: neo4j:latest
    ports:
      - "7474:7474"
      - "7687:7687"
    environment:
      NEO4J_AUTH: "neo4j/[8文字以上のパスワード]"
      NEO4J_apoc_export_file_enabled: "true"
      NEO4J_apoc_import_file_enabled: "true"
      NEO4J_apoc_import_file_use__neo4j__config: "true"
      NEO4J_dbms_security_procedures_unrestricted: "apoc.*"
    ulimits:
      nofile:
        soft: 40000
        hard: 40000
    volumes:
      - ./data:/data
      - ./logs:/logs
      - ./conf:/conf
      - ./plugins:/plugins

として保存

なお
neo4j/ は必須で、
NEO4J_AUTH の形式は常に ユーザー名/パスワード
となっている
なので通常はパスワードを変更する

docker compose up -d

を実行したが

validating /Users/snowpool/aw10s/ne4j_pg/docker-compose.yml: (root) Additional property dservices is not allowed

となる

GPTで調べると

ocker-compose.yml ファイルで
トップレベルのキーとして dservices が使用されているためです。
Docker Compose の標準では、
トップレベルのキーは services である必要があります。

となるため
コードを修正

最初の

dservices:

services:

へ変更し保存

docker compose up -d

を実行すれば

[+] Running 2/2
 ✔ Network ne4j_pg_default    Created                                      0.0s 
 ✔ Container ne4j_pg-neo4j-1  Started                                      0.2s 

となる

これで
http://localhost:7474
へアクセスし
管理画面が表示されればOK

管理画面には
docker-compose.yamlで設定したID「neo4j」とそのパスワードでログインする

ログインしたらテスト

CREATE (p:Person {name: "Alice", age: 30})-[:KNOWS]->(p2:Person {name: "Bob", age: 25})


Cypherクエリを実行し、ノードとリレーションシップを作成

MATCH (n) RETURN n

を実行すると
登録したデータの確認が画像で表示される

データ永続化のテストのため

docker compose down

でコンテナを停止

コンテナを再起動するので

docker compose up -d

これで再度

MATCH (n) RETURN n

を実行して表示されれば問題なし

次に
APOCバイナリのインストール

これには dockerコンテナの名前が必要なので

docker ps

を実行しコンテナ名を調べる

CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                                      NAMES
cc1a5da764cf   neo4j:latest   "tini -g -- /startup…"   7 minutes ago   Up 7 minutes   0.0.0.0:7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp   ne4j_pg-neo4j-1

という結果になったので
コンテナ名は ne4j_pg-neo4j-1
ということがわかる

次にNeo4j のバージョン表示

docker exec -it ne4j_pg-neo4j-1 neo4j --version

を実行すれば

5.26.0

とバージョンが表示される

Neo4jのバージョンに対応するAPOCをGitHubリリースページからダウンロード

今回は
apoc-5.26.0-core.jar
をダウンロード

これを plugins ディレクトリに配置する

mv ~/Downloads/apoc-5.26.0-core.jar plugins 

次にコンテナ再起動

docker compose down
docker compose up -d

次に
http://localhost:7474
へアクセス

CALL apoc.help('apoc')

を実行し
APOCが利用可能になっていることを確認

Neo4jのインストール

Neo4jのインストール

https://neo4j.com/docs/getting-started/whats-neo4j/

3種類あるようなので
neo4jの デスクトップ、インストールタイプ、docker での必要スペックをまとめました
M1MacbookAir 16GBだと動かせそうなのは docker

これで動かすようにする

Neo4j の学習環境を Docker で構築する
によれば
NEO4J_AUTH=none にすることで、認証なしに環境へログインができるようになる

とりあえずdocker がインストールされていないので
これを先に入れる

Docker Desktopのインストール
https://www.docker.com/products/docker-desktop/
へアクセス

Get started をクリック

Download Docker Desktop をマウスオーバーすると
Download for Mac Apple Silicon
が表示されるのでクリック

これでダウンロードされる

ダウンロード完了したらダブルクリックで
Applicationにdocker をドラッグする

これでアプリを起動すると

Docker Subscription Service Agreement
By selecting accept, you agree to the Subscription Service Agreement⁠, the Docker Data Processing Agreement⁠, and the Data Privacy Policy⁠.
Commercial use of Docker Desktop at a company of more than 250 employees OR more than $10 million in annual revenue requires a paid subscription (Pro, Team, or Business). See subscription details⁠

と表示されるので意味を調べる

Docker サブスクリプション サービス契約
[同意する] を選択すると、サブスクリプション サービス契約、Docker データ処理契約、およびデータ プライバシー ポリシーに同意したことになります。

従業員数が 250 人を超える企業、または年間収益が 1,000 万ドルを超える企業で Docker Desktop を商用利用するには、有料のサブスクリプション (Pro、Team、または Business) が必要です。サブスクリプションの詳細を参照⁠

とのこと

この日本語で検索したら
https://oopsoop.com/install-docker/
MacにDocker Desktopをインストールする手順
が出てきた

とりあえずサイトを参考に
Accept をクリックし

Use recommended settings (requires password)
のままにして
Finishをクリック

次に Sign In か Sign up の画面になるけど
アカウント登録をしなくてもDockerの基本的な機能は使える
とのことなのでSkip にした

次にターミナルで

docker -v                

でバージョンを確認したら

Docker version 27.3.1, build ce12230

となったので
まずはインストール成功

Neo4jのDockerイメージを確認

docker search neo4j
NAME                              DESCRIPTION                                      STARS     OFFICIAL
neo4j                             Neo4j is a highly scalable, robust native gr…   1290      [OK]
bitnami/neo4j                     Bitnami container image for Neo4j                13        
bitnamicharts/neo4j               Bitnami Helm chart for Neo4j                     0         
vulhub/neo4j                                                                       0         
ocelotsocialnetwork/neo4j                                                          0         
neo4j/neo4j-experimental          Experimental Neo4j Docker images                 10        
neo4j/neo4j-admin                 Neo4j database administration tool.              1         
neo4j/helm-charts-backup          This repo will hold the docker image used by…   0         
neo4j/neo4j-arm64-experimental    Experimental Neo4j images for the ARM64 arch…   5         
neo4j/helm-charts-reverse-proxy   this repo holds the docker image for neo4j r…   0         
neo4j/neo4j-ops-manager-server    Neo4j Ops Manager server application             0         
neo4j/neo4j-ops-manager-agent     Neo4j Ops Manager agent is to be deployed on…   0         
amd64/neo4j                       Neo4j is a highly scalable, robust native gr…   0         
neo4j/helm-charts-operations      Neo4j helm chart operations which allows you…   0         
phenompeople/neo4j                Neo4j is a highly scalable, robust native gr…   1         
frodenas/neo4j                    A Docker Image for Neo4j                         8         
rapydo/neo4j                                                                       0         
tpires/neo4j                      Neo4j is a highly scalable, robust (fully AC…   82        
c12e/neo4j                                                                         0         
arm64v8/neo4j                     Neo4j is a highly scalable, robust native gr…   0         
2045c6c4/neo4j                                                                     0         
trollin/neo4j                                                                      0         
harshit9398/neo4j                 Customized Neo4j image for importing data fr…   0         
statisticsnorway/neo4j                                                             0         
cluedin/neo4j         

0
となる

Dockerを用いたPythonとNeo4jの開発環境構築


Chat got では
Docker Hubに登録しておくと、公式イメージを簡単にダウンロードできる
とのことなので
先に登録をする

結局登録することになった
https://hub.docker.com/
へアクセス

しかし既に登録されていると出る
おそらく昔ドットインストールで dockerやった時に登録している

とりあえずこれで登録はできているので
次にdocker イメージの取得

しかし

   
docker pull neo4j 

を実行すると

   
Using default tag: latest
Cannot connect to the Docker daemon at unix:///Users/snowpool/.docker/run/docker.sock. Is the docker daemon running? 

となる

原因を調べたら
M1 Macでは、Docker Desktopを手動で起動する必要があるらしい

再度 Docker Desktop を起動し

   
docker pull neo4j 

を実行したら

   
Using default tag: latest
latest: Pulling from library/neo4j
b8bfdadce121: Download complete 
c783cffde723: Download complete 
f549d6f5d7d3: Download complete 
46120a0c7324: Download complete 
879a6187682f: Download complete 
4f4fb700ef54: Download complete 
Digest: sha256:411e532d5c9892e7c955b4e631da423af41ede6a683a0de02c93876b7509c2db
Status: Downloaded newer image for neo4j:latest
docker.io/library/neo4j:latest
 

となった

とりあえずイメージ取得はできたが起動でわからないことがあるので
GPTで調べる

docker compose コマンドで Neo4j を起動するのと
docker run –name neo4j \ -p 7474:7474 -p 7687:7687 \ -e NEO4J_AUTH=neo4j/testpassword \ -v $HOME/neo4j/data:/data \ neo4j で起動する この違いは?

`docker compose` コマンドと `docker run` コマンドを使った起動方法の違いを説明します。それぞれの方法には特徴やメリットがあり、使用シーンによって使い分けることができます。

### **1. `docker run` を使った起動**
#### **特徴**
– 単一のコンテナを直接起動するため、簡単で軽量。
– 起動コマンド内で全ての設定(ポートマッピング、環境変数、ボリュームなど)を指定します。

#### **メリット**
– **シンプル**: コマンド一つで起動でき、設定ファイルが不要。
– **素早くテスト可能**: 手早く試したい場合に便利。

#### **デメリット**
– **複雑な設定が困難**: 設定が多い場合、コマンドが煩雑になりやすい。
– **再利用性が低い**: 毎回設定を入力する必要があり、同じ設定で複数環境を管理するのは難しい。
– **スケーリングが難しい**: 他のサービスとの連携が必要な場合には不向き。

### **2. `docker compose` を使った起動**
#### **特徴**
– 複数のコンテナやサービスを `docker-compose.yml` という設定ファイルで一括管理します。
– ネットワーク設定や環境変数、ボリュームなどをファイルで定義します。

#### **例: `docker-compose.yml` ファイル**
“`yaml
version: ‘3.8’
services:
neo4j:
image: neo4j
container_name: neo4j
ports:
– “7474:7474”
– “7687:7687”
environment:
– NEO4J_AUTH=neo4j/testpassword
volumes:
– $HOME/neo4j/data:/data
“`

#### **起動コマンド**
“`bash
docker compose up -d
“`

#### **メリット**
– **設定の再利用が簡単**: `docker-compose.yml` ファイルを使い回して環境を再現可能。
– **複数サービスの管理**: 複数のコンテナ(例: Neo4jと関連するアプリケーション)をまとめて起動・停止できる。
– **環境の可搬性**: 設定ファイルを共有すれば、他の環境でも同じ構成で起動可能。
– **スケールしやすい**: 複数インスタンスを簡単に立ち上げたり、複雑なネットワーク設定を扱いやすい。

#### **デメリット**
– **初期設定が必要**: `docker-compose.yml` ファイルを作成する手間がある。
– **単体での試験にはやや過剰**: シンプルなコンテナ起動には不要な場合が多い。

### **具体的な使い分け**

| **シーン** | **`docker run`** | **`docker compose`** |
|————————————|—————————————————|————————————————|
| **シンプルなテストや実験** | 最適 | 過剰な場合がある |
| **複数サービスの起動(例: Neo4j + アプリ)** | 煩雑 | 非常に便利 |
| **設定を何度も再利用する場合** | 毎回コマンド入力が必要 | 設定ファイルで簡単に再利用 |
| **本番環境の準備や運用** | 管理が難しい | 環境構築や管理に最適 |
| **チーム開発や共有環境** | 他者への設定共有が困難 | 設定ファイルで簡単に共有可能 |

### **結論**
– **単純な用途**: 一回限りのテストや小規模な利用では `docker run` が簡単。
– **再利用性・管理性が重要**: チーム開発や本格的な運用では `docker compose` を使うのがおすすめ。

とりあえず次にpythonでneo4j を使えるようにする

Llama 3.2とNeo4jでローカルGraphRAG環境を構築

これをやる場合
Neo4jのCypherクエリ言語を拡張するライブラリapoc-coreを使用する

Dockerコンテナを利用したNeo4jの環境構築とAPOCのインストール手順
によれば
コンテナで起動したNeo4jにはAPOCのバイナリが含まれていないため、手動でインストールする必要がある

APOC (Awesome Procedures On Cypher) は、Neo4jにおける拡張機能の一つである。
データ操作、外部データの取り込み、ランダムグラフ生成など、Neo4jの基本機能を拡張するプロシージャを提供する。

製品の標準機能として取り込まれた拡張機能も多々あるようで、
とりあえずコアのAPOC入れておいたほうがいい、ということらしい

docker exec -it neo4j-neo4j-1 neo4j --version

を実行したけど

Error response from daemon: No such container: neo4j-neo4j-1

となった

コンテナが起動していないと意味がない

まずはneo4jを起動する