我想基于官方的 ArangoDB 镜像构建一个 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)
但是,当我启动这个图像的容器并转到Arango web 界面时,似乎根本没有数据...
最佳答案
好的,因为位于 var/lib/arangodb3/databases/database-1/
中的 ArangoDB 数据目录在其官方 Dockerfile 中被声明为 Volume,在我的 Dockerfile 中的每条指令之后,该卷将再次变空。
这个问题的解决方法是覆盖 docker-entrypoint,并在运行时(而不是在构建时)初始化数据库,或者(这是我最喜欢的),只需更改 ArangoDB 的数据目录:
mkdir /arango-data
chmod 777 /arango-data
sed -i.bak 's/^\(directory = \).*/\1\/arango-data/' /etc/arangodb3/arangod.conf
您复制到/arango-data 或导入 ArangoDB 的所有内容都不会被删除,因为它没有被声明为一个卷。
关于linux - 在 Dockerfile 中导入 ArangoDB-Dump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45031332/