【问题标题】:Arangodb, Foxx, and Docker with volumeArangodb、Foxx 和 Docker 与卷
【发布时间】:2018-07-10 12:52:58
【问题描述】:

我正在使用 ArangoDB 并开发 Foxx 应用程序。 ArangoDB 使用此图像https://store.docker.com/images/arangodb 托管在 Docker 容器中。我有另一个 Docker 容器正在运行我的应用前端。

我创建了一个卷来保存数据库数据,我还创建了一个卷来保存 Foxx 应用数据:

  - type: volume
    source: databasedev
    target: /var/lib/arangodb3
  - type: volume
    source: foxx
    target: /var/lib/arangodb3-apps

最后,我创建了一个从 Foxx 源文件夹到 ArangoDB 容器中 Foxx 应用程序文件夹的绑定挂载:

  - type: bind
    source: C:\\[pathtosource]\\src\\foxx
    target: /var/lib/arangodb3-apps/_db/poflow

在编写 Foxx 源代码时,大约有 40-50% 的时间会被删除。我试过在 Foxx 卷上使用“no-copy”选项,但它似乎只会让情况变得更糟。

在我的容器在我的前端容器中组成一个节点脚本后,尝试安装我的 Foxx 服务并将其设置为开发模式。基本上,它会即时压缩我的 Foxx 源并安装它。但是它经常发现我的Foxx源文件夹为空而失败,我在哪点恢复文件,并写下来,然后备份再试一次。

我做错了吗?有什么我想念的吗?似乎 ArangoDB 并非每次都保留 Foxx 数据。

【问题讨论】:

  • 什么都没有?我希望有人一起使用 Arango、Foxx 和 Docker

标签: docker volume arangodb foxx


【解决方案1】:

我可能已经找到了解决方案。我没有直接在我的撰写文件中使用公共 ArangoDB docker 映像,而是转而使用 dockerfile 构建自己的。

之前:

database:
    image: "arangodb"

之后:

  database:
    image: "arangodb"
    build:
      context: .
      dockerfile: dock-arango-dev.Dockerfile

那么我的 docker 文件是这样的:

FROM arangodb
ENV ARANGO_ROOT_PASSWORD supersecurepass
WORKDIR /var/lib
COPY "./src/foxx" "./arangodb3-apps/_db/foxxapp"
EXPOSE 8529

我认为 docker 文件中的复制指令有什么诀窍。到目前为止,它一直运行良好。如果它继续这样下去,我会在几天后接受这个答案。

编辑: 不幸的是,这并没有 100% 解决问题,尽管它已经改进了它。所以我不会将此标记为答案,但这是一个有用的步骤。

编辑: 使用这种方法几周后,它只在我身上失败了一次。所以也许那是侥幸。但是这种方法肯定比我以前的技术效果更好。所以我会将此标记为答案。如果有人提供更好的工作流程或更可靠的方法,我会改变答案。

【讨论】:

    【解决方案2】:

    我之前的回答帮助了一段时间,直到项目变得更加复杂并涉及更多 Foxx 微服务。我没有创建一个大而复杂的答案,而是决定发布一个单独的答案以使事情更清楚。

    在使用 Arango 绑定进行大量测试之后,似乎 Arango 设置 Foxx 服务目录的方式与 Docker 创建绑定的方式存在冲突。也许如果 Docker 有办法延迟绑定创建,直到 Arango 启动并配置它的 Foxx 服务之后,事情可能会奏效。但似乎存在冲突,并且 Dockers 绑定通常会破坏 Foxx 服务。在许多情况下,来自一项服务的源文件会进入另一项服务。很奇怪。

    所以我的解决方案是完全放弃使用绑定进行开发。相反,我创建了一个利用 ArangoJS 驱动程序和一个名为 chokidar 的 NPM 库的脚本。该脚本监视我的 foxx 源目录,并且只要保存更改,它就会使用 ArangoJS 驱动程序通过 HTTP 替换 foxx 服务。我认为它可能效率低下,但实际上它非常快速且有效,并且它绕过了我在使用 Docker 时遇到的所有问题。

    我希望看到 Arango 通过他们的 Foxx 服务更全面地支持 Docker,但与此同时,这个解决方案似乎非常适合我的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多