[英]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.