docker安装fastdfs

Docker安装FastDFS Docker安装FastDFS(分布式文件系统)并演示图片存储与下载   首先自己已经安装好docker并配置好镜像加速器 1.获取FastDFS Docker镜像来运行FastDFS docker image pull delron/fastdfs 也可以直接使用打包的镜像备份文件 docker load -i 文件路径/fastdfs_docker.tar 加载好镜像后,就可以开... 阅读详情

docker安装说明: https://blog.youkuaiyun.com/song_java/article/details/88061162

docker镜像地址: https://store.docker.com/community/images/season/fastdfs 

宿主机IP地址: 192.168.174.129

使用docker-compose运行fastdfs

version: '2'
services:
  tracker:
    image: season/fastdfs:1.2
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./tracker_data:/fastdfs/tracker/data"
    network_mode: "host"
    command: "tracker" 

  storage:
    image: season/fastdfs:1.2
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./storage_base_path:/fastdfs/storage/data"
      - "./store_path0:/fastdfs/store_path"
    environment:
      TRACKER_SERVER: "192.168.174.129:22122"
    network_mode: "host"
    command: "storage"

  nginx:
    image: season/fastdfs:1.2
    restart: always
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "./nginx.conf:/etc/nginx/conf/nginx.conf"
      - "./store_path0:/fastdfs/store_path"
    environment:
      TRACKER_SERVER: "192.168.174.129:22122"
    network_mode: "host"
    command: "nginx" 

根据docker-compose.yml我们看到主要有3个模块: tracker  storage  nginx

tracker 

      挂载 /fastdfs/tracker/data ,这个目录对应的是 tracker.conf中的 base_path

 storage

      挂载/fastdfs/storage/data ,这个目录对应的是 /fdfs_conf/storage.conf中的base_path

      挂载/fastdfs/store_path ,这个目录对应的是/fdfs_conf/storage.conf中的store_path0

      环境变量:   GROUP_NAME    对应 /fdfs_conf/storage.conf中的group_name

                         TRACKER_SERVER 对应 /fdfs_conf/storage.conf中的tracker_server

  nginx

       需要修改nginx的配置文件 /etc/nginx/conf/nginx.conf,因此在宿主机新建一个nginx.conf挂载到/etc/nginx/conf/nginx.conf

       nginx.conf配置文件如下     

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /group1/M00 {
            root /fastdfs/storage/data;
            ngx_fastdfs_module;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 }
}

     注意到 nginx.conf中有下面一段代码
        location /group1/M00 {
            root /fastdfs/storage/data;
            ngx_fastdfs_module;
        }

     可以看到nginx使用了storage的store_path0,因此需要将store_path0挂载到nginx中 (docker-compose.yml中的volumes下的

"./store_path0:/fastdfs/store_path" 就是干这个的)

 只要运行 docker-compose up -d 即可启动这三个模块

 启动之后,我们可以通过Java代码验证验证一下,下面介绍一下Java的nginx客户端的使用

  (1)  引入maven依赖

    <dependency>
      <groupId>net.oschina.zcx7878</groupId>
      <artifactId>fastdfs-client-java</artifactId>
      <version>1.27.0.0</version>
    </dependency>

 (2)编写Java处理代码


import com.google.common.io.Files;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Map;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient1;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class FastdfsClient {
  private static final Logger LOG = LoggerFactory.getLogger(FastdfsClient.class);
  private static StorageClient1 storageClient1 = null;
  private static String trackerServerUrl = null;

  //初始化FastDFS Client
  static {
    try {
      ClientGlobal.init("src/main/resources/fdfs_client.conf");
      TrackerClient trackerClient = new TrackerClient(ClientGlobal.g_tracker_group);
      TrackerServer trackerServer = trackerClient.getConnection();

      trackerServerUrl = trackerServer.getInetSocketAddress().getHostString();
      LOG.info("trackerServerUrl={}",trackerServerUrl);
      StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);

      storageClient1 = new StorageClient1(trackerServer, storageServer);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public static String uploadFile(File file , Map<String, String> meta) {
    try {
      byte[] buff = readFromFile(file);
      NameValuePair[] nameValuePairs = null;
      if (meta != null) {
        nameValuePairs = new NameValuePair[meta.size()];
        int index = 0;
        for (Map.Entry<String, String> entry : meta.entrySet()) {
          String name = entry.getKey();
          String value = entry.getValue();
          nameValuePairs[index++] = new NameValuePair(name, value);
        }
      }
      String fileExt = Files.getFileExtension(file.getName()) ;
      return storageClient1.upload_file1(buff, fileExt, nameValuePairs);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }

  public static int downloadFile(String fileId, String filePath) {
    FileOutputStream fos = null;
    try {
      byte[] content = storageClient1.download_file1(fileId);
      writeToFile(content, filePath);
      return 0;
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (fos != null) {
        try {
          fos.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    return -1;
  }


  private static byte[] readFromFile(File file) throws Exception {
    try (FileInputStream inputStream = new FileInputStream(file)) {

      FileChannel fileChannel=inputStream.getChannel();
      int fileSize = (int)fileChannel.size() ;
      ByteBuffer buffer = ByteBuffer.allocate(fileSize);
      fileChannel.read(buffer);
      return buffer.array();
    }
  }


  public static void writeToFile(byte[] content, String filePath) throws Exception {
    try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
      outputStream.write(content);
    }
  }
}

  (3) 上述代码中使用到了配置文件 src/main/resources/fdfs_client.conf

connect_timeout = 60
network_timeout = 60
charset = UTF-8
http.tracker_http_port = 8080
http.anti_steal_token = no
#tracker服务地址
tracker_server = 192.168.174.129:22122

 (4)测试验证

  @Test
  public void testUpload() {
    File file = new File("pom.xml");
    Map<String, String> meta = Maps.newHashMap();
    String fileid = FastdfsClient.uploadFile(file, meta);
    assertNotNull(fileid);
    System.out.println(fileid);

    int result = FastdfsClient.downloadFile(fileid, "tmp.xml");
    Assert.assertEquals(0, result);
  }

    文件上传成功之后会返回一个fileid,类似这样的  group1/M00/00/00/wKiugVtpZxKAXoGKAAAR-ooLxT0919.xml

    文件下载时,需要将这个fieldid作为入参传入

    从这段代码来看,貌似我们并没用到nginx,事实确实如此,那么nginx是干什么的呢?nginx是为了我们能够通过地址去访问文件,如上面的fileid前加上nginx所在的服务器即可在浏览器访问 (http://192.168.174.129/group1/M00/00/00/wKiugVtpZxKAXoGKAAAR-ooLxT0919.xml) 

docker安装fastdfs详细教程 安装fastdfs,排行最靠前的是镜像season/fastdfs,但是这个镜像不能运行多个storage,启动多个会造成端口占用的问题,而且有的版本好像带nginx比如1.2,有的版本又不带nginx比如latest。使用delron/fastdfs镜像,只需要启动两个容器,一个tracker,一个storage即可。fastdfs是一个开源的分布式文件系统,在实际使用中,通过源码编译安装过程非常复杂,但是通过docker快速构建却非常容易。下面介绍通过docker安装fastdfs的方法。 阅读详情

相关推荐

Windows 24H2升级后eNSP AR_40报错40?VirtualBox虚拟化修复指南

虚拟化技术通过Hypervisor在操作系统与硬件间建立抽象层,使虚拟机能够共享物理资源。其核心原理依赖CPU的VT-x/AMD-V指令集,而Windows 24H2对内核隔离与驱动签名的强化会直接占用或拦截这些虚拟化资源。在工程实践中,VirtualBox作为Type-2型Hypervisor,常因内存完整性开启或版本过旧导致虚拟网卡创建失败,进而引发设备启动中断。典型场景包括网络仿真实验、多系统测试环境搭建等。当eNSP的AR_40路由器依赖VirtualBox引擎时,24H2的安全策略变更便会触发错误

weixin_34375251的博客 218

Docker中搭建FastDFS文件系统(多图)

FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等。我上传文件肯定是为了能够访问的呀,所以为了提供 web 访问,那么就需要集成 Nginx 了,但是比如就是想自己单独搞 Nginx…前面的补充已经提到了,默认上传的文件是只能在本机访问的,当然这样肯定是不行的,所以我们需要配置一下Nginx 来帮我们实现 Web 访问的效果。数最多的准没错,什么?

极客神殿 3560

思科模拟器汉化教程(附带中文汉化包)

思科模拟器是一种模拟Cisco网络设备的软件工具。它可以模拟Cisco网络设备的所有功能,包括路由器、交换机、防火墙等,并提供了一个可视化的用户界面,让用户可以通过图形化的方式来管理网络设备。思科模拟器因其便捷、易用的特点被广泛应用于网络工程师的实验、测试和培训等方面思科模拟器的功能是强大的,但当我们在使用思科模拟器的时候就会有一些烦恼,由于思科是全球最大的企业级网络设备供应商之一。思科公司的产品和服务被广泛应用于各种领域和行业,所以思科模拟器默认是全英文的,但是在最新版本中是支持中文的。

2302_76908369的博客 4万+

转载优化:docker-compose整合FastDFS

转载

ww_ndsc_ww的专栏 777

STC8H单片机ADC实战:从读取电位器到串口绘图,12位精度玩起来

本文详细介绍了STC8H单片机的ADC功能实战应用,从读取电位器到串口绘图,展示了12位精度的实现方法。通过硬件连接、代码配置、串口数据传输及高级优化技巧,帮助开发者快速掌握ADC模块的使用,适用于各种传感器数据采集和信号处理场景。

weixin_28278377的博客 345

1位2路选择器设计

1位2路选择器设计

好好学习,天天向上 3579

Docker-Compose安装单机版FastDFS

Docker-Compose安装单机版FastDFS

qq_49417441的博客 755

【零基础学习CAPL】——弹窗信息提示

不用手动制作Panel窗口,直接使用CAPL脚本实现弹窗提示。//没有wait超时,等待测试人员确认//有wait超时,对话框在超时后自动终止//有wait超时,可以显示一个资源,即对话框可以显示额外的信息。/*参数说明text:显示在弹窗中的内容,长度限制在4096字符timeout:弹窗自动结束的时间,单位:ms。若为0,则无超时控制heading:对话框文本上方的标题。字符串最大长度限制在256个字符。resource:URL或文件路径。字符串的最大长度是有限的(512个字符)。

LOVE135149的博客 268

Centos Stream 9 安装 Docker、season/fastdfs

Centos Stream 9 安装 Docker、season/fastdfs

coisini.cn记录 1619

unity从3D升级到urp管线,打包ab包后,材质全部变紫色

确保材质中的被转换为 URP 兼容的着色器。在打包 AssetBundle 时,确保所需的着色器被正确打包。确保运行 AB 包的目标项目中正确配置了 URP 渲染管线。如果加载后材质丢失,检查 AB 包的加载逻辑,确保材质正确应用了着色器。通过这些步骤,你应该能够解决从标准渲染管线切换到 URP 渲染管线后,材质在 AB 包中变紫色的问题。如果问题仍然存在,请根据具体错误日志进一步排查。希望如上措施及解决方案能够帮到有需要的你。

**My Coding Family** 1965

AI:270-基于ASFF改进YOLOv8检测头的多尺度特征融合方法详解与实战

ASFF是一种基于自适应特征融合的策略,能够动态调整不同尺度特征的融合权重,适应场景中不同大小的目标。传统的YOLOv8检测头使用固定的特征融合策略,而ASFF则通过引入学习参数,使得网络能够根据输入图像的特征自适应地选择不同尺度特征的重要性。这一策略对于检测小目标或尺度变化大的目标具有显著优势。本文提出了一种改进YOLOv8检测头的新方法,通过引入自适应空间特征融合模块(ASFF),有效提升了多尺度目标检测的性能,特别是在小目标检测任务中的表现。

一键难忘的博客 3915

docker 安装 fastdfs

安装前准备:一个云服务器或本地服务器。

ZGSDMAN的博客 5480

推荐系统(一)概述

在互联网领域,推荐系统(Recommendation Systems)的应用非常广泛。在音视频方面,如抖音、快手、哔哩等;在电商平台方面,如京东、淘宝、拼多多等。推荐有助于帮助用户快速发现潜在感兴趣的内容(音视频、商品、新闻等信息流),从而提升用户体验,同时有助于提升商业效率。从本文开始,笔者将结合自身在信息流推荐领域的经验,通过系列文章对推荐系统展开介绍。

Jin_Kwok的博客 6085

基于 Docker 来安装 FastDFS

文章目录百度百科FastDFS 简介上传交互过程下载交互过程FastDFS 为什么要结合 Nginx其他资源FastDFS 安装环境准备创建工作目录docker-compose.yml 百度百科 参考百度百科 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线...

七年蝉 2万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

FastDFS基于Docker安装

暂且不说Docker在生产环境的性能如何,单就在学习新技术的过程中能够快速构建环境这一项来说,就值得推荐你尝试使用。本文带大家基于Docker来安装FastDFS服务。 即便你对FastDFS的安装不感兴趣,也可以学习一下Docker安装软件的过程(基本通用),是提高学习效率的法宝之一。 如果想补习一下FastDFS的原理,请参考《文件管理系统FastDFS原理详解》,有助于下面内容的理解和学习。 Docker安装FastDFS 关于Docker的安装不同的操作系统有不同的安装方法,这里就不再赘述,默认你的

程序新视界 2461

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

docker下安装fastDFS

docker下安装fastDFS 参考链接: https://blog.youkuaiyun.com/qq_37759106/article/details/82981023 获取docker镜像: docker pull qbanxiaoli/fastdfs 运行fastDFS docker run -d --restart=always --privileged=true --net=host -...

u010587274的专栏 647

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

FastDFS 安装及docker 安装 FastDFS

FastDFS 安装 软件下载 FastDFS 官网地址: https://github.com/happyfish100 FastDFS需要下面3个包 https://github.com/happyfish100/libfastcommon/archive/master.zip https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip https://github.com/happyfish100/fastdfs/ar

小孩与狗的博客 1168

使用Docker安装FastDFS

使用Docker安装FastDFS 1. 获取镜像 可以利用已有的FastDFS Docker镜像来运行FastDFS。 获取镜像可以通过下载 docker image pull delron/fastdfs 也可是直接使用提供给大家的镜像备份文件 docker load -i 文件路径/fastdfs_docker.tar 加载好镜像后,就可以开启运行FastDFS的tracker和stor...

qq_43638685的博客 146

基于docker安装FastDFS及使用

1.1FastDFS的安装 1、存储空间可扩展。 2、提供一个统一的访问方式。 使用FastDFS,分布式文件系统。存储空间可以横向扩展,可以实现服务器的高可用。支持每个节点有备份机。 1.1.1什么是FastDFS? FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS...

爱吃芒果的西瓜 377

利用docker安装fastdfs

一、安装fastdfs 本机系统centos7 1.安装docker

m0_60599550的博客 1138

Docker中FastDFS安装和使用

Docker安装运行FastDFS,文件上传和下载!

Python全栈系列 2265

使用docker方式安装FastDFS

FastDFS 架构包括 Tracker server 和 Storage server。 客户端请求 Tracker server 进行文件上传,下载,通过 Tracker server 调度 最终由 Storage server 完成文件上传和下载。 Tracker server 作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。 Storage se

周梦顺 1655

docker安装fastdfs_FastDFS安装使用

FastDFS简介FastDFS 是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Se...

weixin_39639260的博客 392
上一篇: 在centos上安装fastdfs+nginx(单机版)
下一篇: docker安装jenkins
五克松
博客等级 码龄17年 4粉丝 13原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值