使用Docker一键搭建FastDFS+Nginx分布式文件服务器
做过很多项目在图片上传上一直使用的是FastDFS,刚开始得知搭建一个这样的系统非常复杂,所以直接使用了淘淘商城的虚拟机。在后面的项目中,最终选择在在阿里云上自己搭建一个FastDFS+Nginx分布式文件服务器。文章可参考Centos7 安装FastDFS+nginx module现在考虑到后期服务器可能要变更,重新搭建太耗时,并且现在服务器安装的东西太多准备重装一下CentOS系统,所以最近.
做过很多项目在图片上传上一直使用的是FastDFS,刚开始得知搭建一个这样的系统非常复杂,所以直接使用了淘淘商城的虚拟机。在后面的项目中,最终选择在在阿里云上自己搭建一个FastDFS+Nginx分布式文件服务器。文章可参考Centos7 安装FastDFS+nginx module
现在考虑到后期服务器可能要变更,重新搭建太耗时,并且现在服务器安装的东西太多准备重装一下CentOS系统,所以最近把很多东西都用Docker重新搭建了一下。
本文重点教给大家使用Docker一键搭建FastDFS+Nginx分布式文件服务器,具体搭建过程太复杂,希望以后有时间可以总结一下,大部分坑都在docker使用上不熟练和docker中的centos环境太少,甚至没有基础的vim、ll、yum等。不过考虑到系统的精简性,最终并没有将这些环境加入进去。
拉取镜像并启动
docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=47.95.234.255 -e WEB_PORT=80 -v ${HOME}/fastdfs:/var/local/fdfs registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs
其中-v ${HOME}/fastdfs:/var/local/fdfs
是指:将${HOME}/fastdfs
这个目录挂载到容器里的/var/local/fdfs
这个目录里。所以上传的文件将被持久化到${HOME}/fastdfs/storage/data
里,IP 后面是自己的服务器公网ip或者虚拟机ip,-e WEB_PORT=80 指定nginx端口
测试
docker exec -it fastdfs /bin/bash
echo "Hello FastDFS!">index.html
fdfs_test /etc/fdfs/client.conf upload index.html
可以访问说明FastDFS就搭建好了。
如果有问题可以看一下是否占用80端口或是否开启22122 23000端口
FastDFS整合SpringBoot
首先加上依赖
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
</dependency>
配置yml文件
# 分布式文件系统fastdfs配置
fdfs:
# socket连接超时时长
soTimeout: 1500
# 连接tracker服务器超时时长
connectTimeout: 600
pool:
# 从池中借出的对象的最大数目
max-total: 153
# 获取连接时的最大等待毫秒数100
max-wait-millis: 102
# 缩略图生成参数,可选
thumbImage:
width: 150
height: 150
# 跟踪服务器tracker_server请求地址,支持多个,这里只有一个,如果有多个在下方加- x.x.x.x:port
trackerList:
- 47.95.234.255:22122
#
# 存储服务器storage_server访问地址
web-server-url: http://47.95.234.255/
spring:
http:
multipart:
max-file-size: 100MB # 最大支持文件大小
max-request-size: 100MB # 最大支持请求大小
测试类
public class FdfsTest {
@Autowired
private FastFileStorageClient storageClient;
@Test
public void testUpload() throws FileNotFoundException {
File file = new File("G:\\img.png");
// 上传并且生成缩略图
StorePath storePath = this.storageClient.uploadFile(
new FileInputStream(file), file.length(), "png", null);
// 带分组的路径
System.out.println(storePath.getFullPath());
// 不带分组的路径
System.out.println(storePath.getPath());
}
@Test
public void testUploadAndCreateThumb() throws FileNotFoundException {
File file = new File("G:\\img.png");
// 上传并且生成缩略图
StorePath storePath = this.storageClient.uploadFile(
new FileInputStream(file), file.length(), "png", null);
// 带分组的路径
System.out.println(storePath.getFullPath());
// 不带分组的路径
System.out.println(storePath.getPath());
}
}
更多推荐
所有评论(0)