前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 安装 FastDFS

Docker 安装 FastDFS

作者头像
jwangkun
发布2021-12-23 17:40:05
7380
发布2021-12-23 17:40:05
举报
文章被收录于专栏:John Wong's BlogJohn Wong's Blog
  1. 安装 fastdfs 必要组件 tracker 什么都不用改
代码语言:javascript
复制
docker run -d --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker 
  1. 安装 fastdfs 存储地址 storage 除了 ip 其他的都不用改
代码语言:javascript
复制
docker run -d --network=host --name storage -e TRACKER_SERVER=你服务器自己的ip:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage 
  1. 进入容器修改配置 一定要,要不然链接不上
代码语言:javascript
复制
docker exec -it tracker bash 
  1. 修改配置
代码语言:javascript
复制
vi /etc/fdfs/client.conf 

将配置 tracker_server = 你自己的 ip:22122

到这其实 fastDFS 就配好了

5.创建项目测试

命令行测试

代码语言:javascript
复制
 /usr/bin/fdfs_upload_file /etc/fdfs/client.conf  lk.log

我这里用的是 springBoot 进行整合。swagger-ui 进行图片上传

​ 5.1.pom 依赖

代码语言:javascript
复制
<!-- FastDFS依赖 -->
<dependency>
    <groupId>com.github.tobato</groupId>
     <artifactId>fastdfs-client</artifactId>
    <version>1.26.5</version>
</dependency>
<!-- Swagger2 核心依赖 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.6.1</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.6.1</version>
</dependency>

​ 5.2配置 yml 需要修改 ip

代码语言:javascript
复制
  spring:
    servlet:
      multipart:
        max-file-size: 100MB # 最大支持文件大小
        max-request-size: 100MB # 最大支持请求大小
  # 分布式文件系统FDFS配置
  fdfs:
    # 链接超时
    connect-timeout: 600
    # 读取时间
    so-timeout: 600
    # 生成缩略图参数
    thumb-image:
      width: 150
      height: 150
    tracker-list: 你自己的ip:22122

​ 5.3配置文件(两个)

SwaggerConfig.java 一定要改成你自己项目的 controller 包路径,这里会扫描你的接口

代码语言:javascript
复制
  @Configuration
  public class SwaggerConfig {
      @Bean
      public Docket createRestApi() {
          return new Docket(DocumentationType.SWAGGER_2)
                  .apiInfo(apiInfo())
                  .select()
                  .apis(RequestHandlerSelectors.basePackage("top.mail.email.controller"))
                  .paths(PathSelectors.any())
                  .build();
      }
      private ApiInfo apiInfo() {
          return new ApiInfoBuilder()
                  .title("SpringBoot利用Swagger构建API文档")
                  .description("使用RestFul风格, 创建人:知了一笑")
                  .termsOfServiceUrl("https://github.com/cicadasmile")
                  .version("version 1.0")
                  .build();
      }
  }

DfsConfig.java

代码语言:javascript
复制
@Configuration
@Import(FdfsClientConfig.class)
// Jmx重复注册bean的问题
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
public class DfsConfig {
}

​ 5.4.工具类

FileDfsUtil.java

代码语言:javascript
复制
  @Component
  public class FileDfsUtil {
      private static final Logger LOGGER = LoggerFactory.getLogger(FileDfsUtil.class);
      @Resource
      private FastFileStorageClient storageClient ;
      /**
       * 上传文件
       */
      public String upload(MultipartFile file) throws Exception{
          StorePath storePath = storageClient.uploadFile(file.getInputStream(),file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()),null);
          return storePath.getFullPath() ;
      }
      /**
       * 删除文件
       */
      public void deleteFile(String fileUrl) {
          if (StringUtils.isEmpty(fileUrl)) {
              LOGGER.info("fileUrl == >>文件路径为空...");
              return;
          }
          try {
              StorePath storePath = StorePath.parseFromUrl(fileUrl);
              storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
          } catch (Exception e) {
              LOGGER.info(e.getMessage());
          }
      }
  }

​ 5.5.controller 接口

FileController.java

代码语言:javascript
复制
@RestController
public class FileController {
     @Resource
     private FileDfsUtil fileDfsUtil ;
     /**
      * 文件上传
      */
     @ApiOperation(value="上传文件", notes="测试FastDFS文件上传")
     @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/wKhIgl0n4AKABxQEABhlMYw_3Lo825.png" ;
         fileDfsUtil.deleteFile(filePathName);
         return ResponseEntity.ok("SUCCESS") ;
     }
}
  1. 6.springBoot 启动类
代码语言:javascript
复制
 @SpringBootApplication
 @EnableSwagger2
 public class EmailApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(EmailApplication.class, args);
     }
 
 }

启动项目

访问:http://localhost:8080/swagger-ui.html

img
img

返回地址表示上传成功。

怎么访问呢?

默认的话,是通过你的 ip:8888 / 上面返回的地址 如果你是阿里云服务就要手动开放 8888、22122、23000 这三个端口

img
img

下一篇: Docker 部署 Confluence(破解版)→

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档