在 Dockerfile 中导入 ArangoDB-Dump
Importing ArangoDB-Dump in Dockerfile
我想构建一个基于官方 ArangoDB 图像的 Docker 图像。在 Docker 文件中,我复制并执行 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 界面时,似乎根本没有数据...
OK,由于位于var/lib/arangodb3/databases/database-1/
的ArangoDB的数据目录在其官方Dockerfile中被声明为Volume,每条指令后该卷将再次变空在我的 Dockerfile 中。
这个问题的解决方法是覆盖 docker-入口点,并在运行时(而不是在构建时)初始化数据库,或者(这是我最喜欢的),只需更改 ArangoDB 的数据目录:
mkdir /arango-data
chmod 777 /arango-data
sed -i.bak 's/^\(directory = \).*/\/arango-data/' /etc/arangodb3/arangod.conf
您复制到 /arango-data 或导入 ArangoDB 的所有内容都不会被删除,因为它没有被声明为一个卷。
我想构建一个基于官方 ArangoDB 图像的 Docker 图像。在 Docker 文件中,我复制并执行 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 界面时,似乎根本没有数据...
OK,由于位于var/lib/arangodb3/databases/database-1/
的ArangoDB的数据目录在其官方Dockerfile中被声明为Volume,每条指令后该卷将再次变空在我的 Dockerfile 中。
这个问题的解决方法是覆盖 docker-入口点,并在运行时(而不是在构建时)初始化数据库,或者(这是我最喜欢的),只需更改 ArangoDB 的数据目录:
mkdir /arango-data
chmod 777 /arango-data
sed -i.bak 's/^\(directory = \).*/\/arango-data/' /etc/arangodb3/arangod.conf
您复制到 /arango-data 或导入 ArangoDB 的所有内容都不会被删除,因为它没有被声明为一个卷。