【问题标题】:How can I specify a configuration file in ArangoDB docker image?如何在 ArangoDB docker 映像中指定配置文件?
【发布时间】:2020-12-28 17:35:00
【问题描述】:

我正在尝试通过 docker compose 启动 ArangoDB 服务器。

默认配置一切正常,但我正在努力让容器中的服务器使用minimal setup获取自定义配置文件

我已尝试使用以下内容覆盖启动顺序:

command: >
    arangod --configuration /arango.conf

我已经检查过,该文件存在于容器中,但是当我通过query through arangoshell 检查配置文件时,它仍然引用默认设置和放在/tmp 文件夹中的arangod.conf 文件。

有什么提示吗?

【问题讨论】:

    标签: docker docker-compose arangodb


    【解决方案1】:

    --config /tmp/arangod.conf 硬编码在 docker-entrypoint.sh at line 185

    它也会在每次容器启动时被/etc/arangodb3/arangod.conf at line 42覆盖

    所以要使用您的 custom.conf 文件运行 arangod,您需要将其作为卷映射到 /etc/arangodb3/arangod.conf

    通过 docker compose

    volumes:
      /custom.conf:/etc/arangodb3/arangod.conf
    

    通过 docker cli

    -v /custom.conf:/etc/arangodb3/arangod.conf
    

    更新:根据 cmets

    custom.conf 必须包含来自/etc/arangodb3/arangod.conf 的默认值

    最简单的方法是通过 docker cli 将默认配置保存到 custom.conf 并在该文件中添加/更新选项

    docker run --rm arangodb/arangodb:3.7.5 sh -c 'cat /etc/arangodb3/arangod.conf' > custom.conf
    

    还需要跟踪新版本 ArangoDB 中 /etc/arangodb3/arangod.conf 中默认选项的更新,并将其反映在您的 custom.conf

    【讨论】:

    • 您的解决方案是对的,所以我将其标记为正确答案。然而,这引起了其他问题:我认为配置文件会覆盖 arangodb 的默认配置,但显然启动过程需要文件中的所有必要配置,没有硬编码的默认值,并且每次请求其他属性时容器都无法运行。您对如何在启动阶段简单地覆盖特定参数有什么建议吗?
    • 默认配置是/etc/arangodb3/arangod.conf,因此您需要将配置基于它,因为您正在覆盖它。你可以通过docker run --rm arangodb/arangodb:3.7.5 sh -c 'cat /etc/arangodb3/arangod.conf' > custom.conf获得它
    • 谢谢,我试试看
    猜你喜欢
    • 2022-08-09
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    相关资源
    最近更新 更多