簡體   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