由于docker 的特殊性质,在开发中完成附件上传的功能。但是在服务器却不能正常的访问附件。或者是附件需要永久存储的问题,而不是随着项目每次发布要去处理附件这种最初级的方式。
主要说一下思路:
方式1、采用附件服务器单独做一套附件服务,类似fastdfs这种。(这也是比较常规且正式的做法)
方式2、采用nginx做附件服务器(静态代理)。
这里介绍下方式2:
1、nginx两种方式安装:
常规安装:配置好nginx然后能正常访问就行,然后配置附件要村存储在服务器的磁盘位置,如下:
root的方式代理失败,采用alias的方式。这样配置以后服务器中/home/img/下的附件就可以直接以ip+端口/xms/upload/xx.png访问了。
如果是用docker方式的nginx 在docker run中增加一项文件夹挂载(映射):
docker run --name mynginx --privileged=true \
-p 8088:80 -p 443:443 -p 9999:9999 -p 9991:9991 \
-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/qw/agent/seating-fontend:/home/qw/agent/seating-fontend \
-v /home/nginx/logs/nginx_error.log:/home/nginx/logs/nginx_error.log \
-v /home/nginx/logs/access.log:/home/nginx/logs/access.log \
-v /home/dockernginx/upload/img:/home/img \
nginx
然后是项目的中的处理:
这里用的是docker的tomcat容器,同样在docker run 新建容器的时候增加一项文件夹挂载(将上传的附件保存至服务器磁盘中):
注意上面与这里两处挂载的文件夹要一致,保证后面上传的附件nginx代理就可以直接访问了。
这样就完成了用nginx做文件服务器,也类似fastdfs-nginx。