1
與我一起工作的其他數據庫泊塢窗(如Postgres)有一種機制,一旦容器第一次啓動,就會將一些初始數據導入其空實例。這通常是將SQL文件放在特定文件夾中的形式。帶有初始數據的Neo4j容器(docker)
我需要爲Neo4j做同樣的事情。我想編寫一個Neo4j Docker鏡像,其中包含一些數據。什麼是正確的方法來做到這一點?
與我一起工作的其他數據庫泊塢窗(如Postgres)有一種機制,一旦容器第一次啓動,就會將一些初始數據導入其空實例。這通常是將SQL文件放在特定文件夾中的形式。帶有初始數據的Neo4j容器(docker)
我需要爲Neo4j做同樣的事情。我想編寫一個Neo4j Docker鏡像,其中包含一些數據。什麼是正確的方法來做到這一點?
這是可以實現...... 有2個要求:
bin/neo4j-admin set-initial-password <password>
然後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
謝謝,但有一件事你Dockerfile不考慮的是,它制定了後data.cypher應刪除(或移動),所以第二次容器啓動,它不會重複。 – Mehran
感謝您的回答。我還有唯一的問題就是睡眠5部分。我一直試圖使用'bin/neo4j status'來確定neo4j是否在運行。但即使它正在運行,所提到的命令也說明它不是!任何意見? – Mehran
請看看[這裏](https://github.com/neo4j/neo4j/issues/7203) – hlihovac