docker部署服务实现文件上传到本地问题解决
本周前端提出需要一个视频上传的接口,由于以前的图片资源都是上传到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
stay hungry, stay foolish