docker安装fastdfs_springboot+fastdfs+docker整合开发

点击上方“ Java资料站 ”,选择“标星公众号”

优质文章,第一时间送达

 一叶知秋无尘   |  作者

urlify.cn/QBBRZz  |  来源

1.Fastdfs介绍

看博客:https://www.jianshu.com/p/b7c330a87855

说明:本系统是deepin系统,已经关闭了防火墙,其他centos等系统要自行判断关防火墙

2.docker安装Fastdfs

(https://www.cnblogs.com/provence666/p/10987156.html)

2.1、拉取镜像

docker pull delron/fastdfs:latest

2.2、查看镜像

docker images

fa6da7b0fdb987997f0d131eabb74fbc.png

 2.3、创建tracker文件夹

mkdir -p /data/tracker              :该文件夹为了和tracker服务器目录挂载

2.3、创建tracker容器

docker run -id --name tracker --restart=always --net host -v /etc/localtime:/etc/localtime -v /data/tracker:/var/fdfs delron/fastdfs tracker

2.4、创建storage文件夹

mkdir -p /data/storage         :该文件夹和storage服务器挂载,存储上传的文件

2.5、创建storage容器

docker run -id --name storage --restart=always --net host -v /etc/localtime:/etc/localtime -v /data/storage:/var/fdfs -e TRACKER_SERVER="192.168.226.14:22122" delron/fastdfs storage

2.6、查看容器

docker ps 看到如下,说明容器启动成功。

f14f8c3fdf1fcf02933925e71449122b.png

 2.7、docker exec -it 容器id bash 进入storage的容器

i1、了解storage.conf内容  /etc/fdfs/storage.conf

文件存储的位置(storage容器的)

a298d35349349c8c2ee18517c4feb123.png

上传的文件存储位置(storage容器的)

e0c46b9ae5c354973106d8fbfb38cd70.png

tracker服务器的地址

0955ea16547482912f881562c46f2d57.png

http访问的端口,默认是8888,可以不修改。

61ea2abc5ef4d7486c1418f7df5de833.png

 i2、去/var/fdfs/ 目录下看,可以看到这个就是我们文件上传到的地方:data

22b25032bf183911f406e4623d31e7dc.png

 i3、配置nginx

进入/usr/local/ngxin/conf   默认配置,不修改也是可以的。

6381292922d220b8d8d1ced7da4ea758.png

 i4、进入到/etc/fdfs/client.conf 看

ddca320133084099ff42794d67175c74.png

 i5、测试文件上传

在我们宿主机的/data/storage 下放一张图片

8d1c4af58849ed7249a989f47a73c1b2.png

 进入storage容器,/var/fdfs目录下,

d1131e56cc9b3e4c67b574e0498f6dec.png

执行命令

fdfs_upload_file  /etc/fdfs/client.conf b.jpg         看到返回了group1/xxx/xx  的字符串。

698617845b22f370c84a2c9b4987d5b3.png

url访问:http://localhost:8888/group1/M00/00/00/wKjObV9Iy-mAZIE9AACGWRCnSVA093.jpg   看到如下图说明成功。

56f32fea10bd5fb88bb66378d3974722.png

2.8、我们既然是进入了storage容器,看其配置,那么我们也进入tracker容器看看配置

i1、docker exec -it tracker bash 进入tracker容器

进入 /etc/fdfs 看到如下

40023cfd5f4ddbfd849c5dc719e47015.png 

我们打开tracker.conf看看

(truacker服务器内容放置的地方)

 1f9535aeab9a02b76473d508eb7046a6.png

 i2、看看放置内容的地方 /var/fdfs  ,虽然和storage服务器都是data和logs,但两者记录内容是不同的。

4ec2dd4e39bf387b6fe9a93f97e5dc68.png

3.上面docker安装FastDfs已经成功,那么接下来整springboot+fastdfs

3.1、导入依赖

<dependency>
            <groupId>com.github.tobatogroupId>
            <artifactId>fastdfs-clientartifactId>
            <version>1.26.5version>
        dependency>

3.2、加入配置类,FastdfsConfig

@Configuration
@Import(FdfsClientConfig.class) // 导入FastDFS-Client组件
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING) // 解决jmx重复注册bean的问题
public class FasfdfsConfig {
    
}

3.3、FileDfsUtil

package com.yiyezhiqiu.fastdfs_hlh.utils;
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;


/**
 * Created with IDEA
 * Date:2020/8/28
 * Time:上午10:37
 *
 * @author:lianhui.he
 */
@Component
public class FileDfsUtil {

    @Resource
    private FastFileStorageClient storageClient ;
    /**
     * 上传文件
     */
    public String upload(MultipartFile multipartFile) throws Exception{
        String originalFilename = multipartFile.getOriginalFilename().
                substring(multipartFile.getOriginalFilename().
                        lastIndexOf(".") + 1);
        StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage(
                multipartFile.getInputStream(),
                multipartFile.getSize(),originalFilename , null);
        return storePath.getFullPath() ;
    }

    /**
     * 删除文件
     */
    public void deleteFile(String fileUrl) {
        if (StringUtils.isEmpty(fileUrl)) {
            System.out.println("fileUrl == >>文件路径为空...");
            return;
        }
        try {
            StorePath storePath = StorePath.parseFromUrl(fileUrl);
            storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }


}
3.4、FileController
@RestController
public class FileController {

    @Resource
    private FileDfsUtil fileDfsUtil ;
    /**
     * 文件上传
     */
    @RequestMapping(value = "/uploadFile",headers="content-type=multipart/form-data", method = RequestMethod.POST)
    public ResponseEntity<String> uploadFile (@RequestParam("file") MultipartFile file){
        String result ;
        try{
            String path = fileDfsUtil.upload(file) ;
            if (!StringUtils.isEmpty(path)){
                result = path ;
            } else {
                result = "上传失败" ;
            }
        } catch (Exception e){
            e.printStackTrace() ;
            result = "服务异常" ;
        }
        return ResponseEntity.ok(result);
    }

    /**
     * 文件删除
     */
    @RequestMapping(value = "/deleteByPath", method = RequestMethod.GET)
    public ResponseEntity<String> deleteByPath (){
        String filePathName = "group1/M00/00/00/wKjObV9Iy-mAZIE9AACGWRCnSVA093.jpg" ;
        fileDfsUtil.deleteFile(filePathName);
        return ResponseEntity.ok("SUCCESS") ;
    }

}

3.5、配置文件application.yml

server:
  port: 8080

#分布式文件系统Fdfsdfs配置
fdfs:
  soTimeout: 1500 #socket连接超时时长
  connectTimeout: 600 #连接tracker服务器超时时长
  thumbImage: #缩略图生成参数,可选
    width: 150
    height: 150
  trackerList: #TrackerList参数,支持多个,我这里只有一个,如果有多个在下方加- x.x.x.x:port
    - 192.168.222.22:22122
# - 192.168.8.102:22122

spring:
  application:
    name: FastDFS-Test
  servlet:
    multipart:
      max-file-size: 100MB # 最大支持文件大小
      max-request-size: 100MB # 最大支持请求大小

3.6、postman测试

eb3029d9a96c3471ba307e11b04e33d7.png

 结果:

561ecdcb9a2680ef865f24efcb22d40f.png

 码云:https://gitee.com/hlh_yiyezhiqiu/fastdfs.git

742a5932dd4c536691be5ef2f0845ace.png

6297b1e913c3197452ac544260f8e6ab.png

  • 新款SpringBoot在线教育平台开源了

  • 精品帖子大汇总

  • 一把“乐观锁”轻松搞定高并发下的幂等性问题(附视频教程)

  • 一文搞懂Java8 Lambda表达式(附视频教程)

感谢点赞支持下哈 b3fcd518865800b56a639c9b5abbe068.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值