2017-06-04 21 views
1

與我一起工作的其他數據庫泊塢窗(如Postgres)有一種機制,一旦容器第一次啓動,就會將一些初始數據導入其空實例。這通常是將SQL文件放在特定文件夾中的形式。帶有初始數據的Neo4j容器(docker)

我需要爲Neo4j做同樣的事情。我想編寫一個Neo4j Docker鏡像,其中包含一些數據。什麼是正確的方法來做到這一點?

回答

3

這是可以實現...... 有2個要求:

  1. 設置初始密碼,這可能會在暗號格式使用bin/neo4j-admin set-initial-password <password>然後
  2. 進口數據從文件中實現cat import/data.cypher | NEO4J_USERNAME=neo4j NEO4J_PASSWORD=${NEO4J_PASSWD} bin/cypher-shell --fail-fast

樣品Dockerfile可能看起來像這樣

FROM neo4j:3.2 

ENV NEO4J_PASSWD neo4jadmin 
ENV NEO4J_AUTH neo4j/${NEO4J_PASSWD} 

COPY data.cypher /var/lib/neo4j/import/ 

VOLUME /data 

CMD bin/neo4j-admin set-initial-password ${NEO4J_PASSWD} || true && \ 
    bin/neo4j start && sleep 5 && \ 
    for f in import/*; do \ 
     [ -f "$f" ] || continue; \ 
     cat "$f" | NEO4J_USERNAME=neo4j NEO4J_PASSWORD=${NEO4J_PASSWD} bin/cypher-shell --fail-fast && rm "$f"; \ 
    done && \ 
    tail -f logs/neo4j.log 

大廈圖像sudo docker build -t neo4j-3.1:loaddata .

並運行容器docker run -it --rm --name neo4jtest neo4j-3.1:loaddata

+0

謝謝,但有一件事你Dockerfile不考慮的是,它制定了後data.cypher應刪除(或移動),所以第二次容器啓動,它不會重複。 – Mehran

+0

感謝您的回答。我還有唯一的問題就是睡眠5部分。我一直試圖使用'bin/neo4j status'來確定neo4j是否在運行。但即使它正在運行,所提到的命令也說明它不是!任何意見? – Mehran

+0

請看看[這裏](https://github.com/neo4j/neo4j/issues/7203) – hlihovac

相關問題