我正在使用ArangoDB并开发Foxx应用程序。ArangoDB托管在使用此映像https://store.docker.com/images/arangodb的Docker容器中。我有另一个码头容器,运行我的应用程序前端。
我创建了一个用于持久化数据库数据的卷,并创建了一个用于持久化Foxx应用程序数据的卷:
- type: volume
source: databasedev
target: /var/lib/arangodb3
- type: volume
source: foxx
target: /var/lib/arangodb3-apps最后,我在ArangoDB容器中创建了从Foxx源代码文件夹到Foxx应用程序文件夹的绑定挂载:
- type: bind
source: C:\\[pathtosource]\\src\\foxx
target: /var/lib/arangodb3-apps/_db/poflow当我编写我的Foxx源代码时,大约40-50%的时间被删除。我试过在Foxx卷上使用“无拷贝”选项,但它似乎只会使情况变得更糟。
在我的容器在前端编写了一个节点脚本之后,容器尝试安装我的Foxx服务并将其设置为开发模式。基本上,它会动态地压缩我的Foxx源代码并安装它。但是它经常会发现我的Foxx源文件夹是空的,并且失败了,我恢复文件,然后写下来,然后备份,然后再试一次。
我做错了吗?我遗漏了什么吗?看起来ArangoDB并不是每次都坚持Foxx数据。
发布于 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服务,但在此期间,这个解决方案似乎非常适合我的需求。
发布于 2018-07-18 16:43:29
我可能找到了解决办法。与直接在我的撰写文件中使用公共ArangoDB停靠器映像不同,我已经切换到使用dockerfile构建自己的文件。
在此之前:
database:
image: "arangodb"之后:
database:
image: "arangodb"
build:
context: .
dockerfile: dock-arango-dev.Dockerfile那么我的停靠文件如下所示:
FROM arangodb
ENV ARANGO_ROOT_PASSWORD supersecurepass
WORKDIR /var/lib
COPY "./src/foxx" "./arangodb3-apps/_db/foxxapp"
EXPOSE 8529我认为docker文件中的复制指令就是其中的诀窍。到目前为止它一直运行得很好。如果这种情况继续下去,几天后我就会接受这个答案。
编辑:不幸的是,并没有百分之百地解决这个问题,尽管它已经改进了它。所以我不会把这作为答案,但这是一个很有帮助的步骤。
编辑:在使用这种方法几周后,它只在我身上失败了一次。所以也许那是个侥幸。但这种方法肯定比我以前的技术更有效。所以我会把这个标记为答案。如果有人提供了更好的工作流程或方法,这是更坚实的,我将改变答案。
https://stackoverflow.com/questions/51265768
复制相似问题