本周前端提出需要一個視頻上傳的接口,由於以前的圖片資源都是上傳到mongo庫存儲,如果再把視頻文件上傳到mongo庫中似乎不太合適。經過一番討論,決定把資源文件統一上傳到本地服務器。但是該服務是通過docker自動化構建,所以就引發一下的兩個問題:
問題一:限制docker的啟動節點(存儲集群)
解決方案
簡單來說就是給每一個node打標簽。
docker node update --label-add tag=storage worker1
上面這句話的意思是master給worker1的docker打上了功能是nginx的標簽。tag和storage是你可以自己定的鍵值對。然后在運行docker service create 的時候,指定–constraint參數即可
docker service create --name my_nginx --constraint 'node.labels.tag == storage' nginx
這樣nginx的容器就會在worker1上啟動,而不會在其他node上啟動了。
問題二:掛載物理機目錄
解決方案
掛載有兩種方式:(1)使用-v (2)使用mount
但是他們有一定的區別
使用-v /tmp/a:/var/a 時。如果宿主機上沒有這個文件/tmp/a,也會自動創建,但是如果使用mount時,宿主機中沒有這個文件會報錯找不到這個文件,並創建失敗。
所以針對項目中的需求,mount是我想要的解決方式。
--mount type=bind,source="$(pwd)"/target,target=/app