LoginSignup
6
6

More than 5 years have passed since last update.

Neo4j configurations on Docker

Last updated at Posted at 2018-11-24

みなさんはneo4jをどの環境で使ってますか?
私はdockerでよく使ってます。docker上でneo4jを動かす際の備忘録を兼ねて。
間違いなどありましたら指摘していただけると幸いです。
※ dockerの使い方の説明などは省略しています。

Neo4jリポジトリ

まずは実行してブラウザでアクセスする

docker run -d -p 7474:7474 -p 7687:7687 neo4j:latest

ブラウザから以下にアクセスすれば起動していることが確認できます。
http://<Docker Host>:7474

設定を変更して起動する

docker imageのdocker-entrypoint.shを見るとわかる通り、neo4j.confの設定キーにNEO4J_というPrefixをつけ、.____として環境変数に渡すことで、neo4j.confに設定値を追加していることが確認できます。

dbms.security.auth_enabled
↓
NEO4J_dbms_security_auth__enabled

以下で少し詳しく確認します。

  • authを無効にして起動する
docker run -d -p 7474:7474 -p 7687:7687 \
       -e NEO4J_AUTH=none \
       neo4j:latest

NEO4J_AUTH=noneを指定することで、dbms.security.auth_enabled=falseが指定されます。

  • 初期パスワードを設定して起動する
docker run -d -p 7474:7474 -p 7687:7687 \
       -e NEO4J_AUTH=neo4j/secret
       neo4j:latest

NEO4J_AUTH=neo4j/<password>を指定することで、neo4j-admin set-initial-password <password>が実行されます。
※ パスワードにneo4jを指定するとエラーになります。

  • メモリの設定を変更する
docker run -d -p 7474:7474 -p 7687:7687 \
       -e NEO4J_dbms_memory_heap_initial__size=512M
       -e NEO4J_dbms_memory_heap_max__size=512M
       -e NEO4J_dbms_memory_pagecache_size=512M
       neo4j:latest

メモリの設定についてはこちらを参照

  • エンタープライズ版を起動する
docker run -d -p 7474:7474 -p 7687:7687 \
       -e NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
       neo4j:enterprise

エンタープライズ版を起動するためにはライセンスの同意が必要となります。 https://neo4j.com/licensing/

ディレクトリについて

外部ストレージをマウントした際に特殊な動きをするディレクトリがあります。

/data

データベースのデータおよび認証情報等が保存される永続ディレクトリ。
neo4jのdocker imageのデフォルトのデータディレクトリは/var/lib/neo4j/dataですが、/var/lib/neo4j/data/dataのシンボリックリンクです。

/conf

このディレクトリに存在するファイルがコンテナ内の/var/lib/neo4j/confディレクトリにコピーされます。
このディレクトリにneo4j.confを配置すると/var/lib/neo4j/conf/neo4j.confが上書きされます。
環境変数で指定した設定値の反映はファイルのコピー後に実行されるため、環境変数で指定した値が優先されます。

/ssl

マウントされているとdbms.directories.certificatesが/sslに設定されます。
(環境変数でNEO4J_dbms_directories_certificatesを指定しても、/sslが優先されます。)

/plugins

マウントされているとdbms.directories.pluginsが/pluginsに設定されます。
(環境変数でNEO4J_dbms_directories_pluginsを指定しても、/pluginsが優先されます。)
APOC Procedures などのjarファイルはここに配置します。

/logs

マウントされているとdbms.directories.logsが/logsに設定されます。
(環境変数でNEO4J_dbms_directories_logsを指定しても、/logsが優先されます。)

/import

マウントされているとdbms.directories.importが/importに設定されます。
(環境変数でNEO4J_dbms_directories_importを指定しても、/importが優先されます。)

EXTENSION SCRIPT

docker run -d -p 7474:7474 -p 7687:7687 \
       -e EXTENSION_SCRIPT=<script_path>
       neo4j:latest

上記のようにEXTENSION_SCRIPTにスクリプトを指定すると全ての設定を反映後、neo4jサーバ起動直前にスクリプトを起動することができます。

まとめ

環境変数で設定を細かく制御できて便利!

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6