首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arangodb,Foxx和Docker,有音量

Arangodb,Foxx和Docker,有音量
EN

Stack Overflow用户
提问于 2018-07-10 12:52:58
回答 2查看 682关注 0票数 3

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

我创建了一个用于持久化数据库数据的卷,并创建了一个用于持久化Foxx应用程序数据的卷:

代码语言:javascript
复制
  - type: volume
    source: databasedev
    target: /var/lib/arangodb3
  - type: volume
    source: foxx
    target: /var/lib/arangodb3-apps

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

代码语言:javascript
复制
  - type: bind
    source: C:\\[pathtosource]\\src\\foxx
    target: /var/lib/arangodb3-apps/_db/poflow

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

在我的容器在前端编写了一个节点脚本之后,容器尝试安装我的Foxx服务并将其设置为开发模式。基本上,它会动态地压缩我的Foxx源代码并安装它。但是它经常会发现我的Foxx源文件夹是空的,并且失败了,我恢复文件,然后写下来,然后备份,然后再试一次。

我做错了吗?我遗漏了什么吗?看起来ArangoDB并不是每次都坚持Foxx数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-16 20:31:17

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

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

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

我希望看到Arango更充分地支持他们的Foxx服务,但在此期间,这个解决方案似乎非常适合我的需求。

票数 2
EN

Stack Overflow用户

发布于 2018-07-18 16:43:29

我可能找到了解决办法。与直接在我的撰写文件中使用公共ArangoDB停靠器映像不同,我已经切换到使用dockerfile构建自己的文件。

在此之前:

代码语言:javascript
复制
database:
    image: "arangodb"

之后:

代码语言:javascript
复制
  database:
    image: "arangodb"
    build:
      context: .
      dockerfile: dock-arango-dev.Dockerfile

那么我的停靠文件如下所示:

代码语言:javascript
复制
FROM arangodb
ENV ARANGO_ROOT_PASSWORD supersecurepass
WORKDIR /var/lib
COPY "./src/foxx" "./arangodb3-apps/_db/foxxapp"
EXPOSE 8529

我认为docker文件中的复制指令就是其中的诀窍。到目前为止它一直运行得很好。如果这种情况继续下去,几天后我就会接受这个答案。

编辑:不幸的是,并没有百分之百地解决这个问题,尽管它已经改进了它。所以我不会把这作为答案,但这是一个很有帮助的步骤。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51265768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档