首页 文章

Arangodb,Foxx和Docker的数量

提问于
浏览
1

我正在使用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数据 .

2 回答

  • 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文件中的copy指令就是诀窍 . 到目前为止,它一直运作良好 . 如果继续这样,我会在几天内接受这个答案 .

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

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

  • 0

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

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

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

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

相关问题