Help us understand the problem. What is going on with this article?

Neo4j configurations on Docker

More than 1 year has passed since last update.

みなさんは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サーバ起動直前にスクリプトを起動することができます。

まとめ

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away