在Dockerfile中导入ArangoDB-Dump

我想要build立一个基于官方的ArangoDB-image的Docker镜像。 在Dockerfile中,我复制并执行一个shell脚本。 这个脚本下载并解压缩一个Arango转储文件,然后用arangorestore --input-directory "dump"导入它。

控制台日志显示导入已成功完成:

 # Connected to ArangoDB 'http+tcp://127.0.0.1:8529' # Re-creating document collection 'pages'... # Loading data into document collection 'pages'... # Re-creating edge collection 'links_bar'... # Loading data into edge collection 'links_bar'... Processed 2 collection(s), read 143363388 byte(s) from datafiles, sent 19 batch(es) 

但是,当我启动这个图像的容器,并进入Arangonetworking界面,似乎根本没有数据…

好的,由于位于var/lib/arangodb3/databases/database-1/ ArangoDB数据目录在其官方Dockerfile中声明为一个 ,所以在我的Dockerfile中的每条指令后,卷将再次变为空。

解决这个问题的方法是覆盖docker-entrypoint,并且在运行时(而不是build)或者(我最喜欢的)初始化数据库,只需要改变ArangoDB的数据目录:

 mkdir /arango-data chmod 777 /arango-data sed -i.bak 's/^\(directory = \).*/\1\/arango-data/' /etc/arangodb3/arangod.conf 

所有你复制到/ arango数据或在ArangoDB导入不会被删除,因为它没有被宣布为一个卷。