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 

 

posted @ 2018-10-13 13:26  c'estlavie  阅读(3913)  评论(0编辑  收藏  举报