繁体   English   中英

Arangodb,Foxx和Docker的数量

[英]Arangodb, Foxx, and Docker with volume

我正在使用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 app文件夹:

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

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

我的容器组成后,我的前端容器中的节点脚本尝试安装我的Foxx服务并将其设置为开发模式。 基本上,它会动态拉链我的Foxx源并安装它。 但它经常发现我的Foxx源文件夹为空并且失败,哪一点我恢复文件,然后组成,然后备份然后重试。

我错了吗? 有什么我想念的吗? 看起来ArangoDB并不是每次都持久保存Foxx数据。

我可能找到了解决方案。 我没有直接在我的撰写文件中使用公共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文件中的copy指令就是诀窍。 到目前为止,它一直运作良好。 如果继续这样,我会在几天内接受这个答案。

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

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

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

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

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

我很乐意看到Arango更充分地使用他们的Foxx服务来支持Docker,但同时这个解决方案似乎非常适合我的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM