【问题标题】:Importing ArangoDB-Dump in Dockerfile在 Dockerfile 中导入 ArangoDB-Dump
【发布时间】:2017-07-11 10:00:57
【问题描述】:

我想基于官方的 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 网络界面时,似乎根本没有数据...

【问题讨论】:

    标签: linux docker arangodb


    【解决方案1】:

    好的,由于 ArangoDB 位于var/lib/arangodb3/databases/database-1/ 的数据目录在其官方 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 的所有内容都将不会被删除,因为它没有被声明为卷。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-28
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 2014-11-13
      相关资源
      最近更新 更多