部署目录结构

docker-compose教程:docker-compose部署fastdfs_运维

vim docker-compose-fastdfs.yml

version: '3'
services:
  # tracker容器: 跟踪服务器,起到调度的作用
  fastdfs-tracker:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/fastdfs:latest        # 原镜像`delron/fastdfs`
    container_name: tracker
    hostname: fastdfs-tracker
    command: tracker
    volumes:
      - ./fastdfs/tracker_data:/var/fdfs
    ports:
      - "22122:22122"

  # storage容器:存储服务器,提供容量和备份服务
  fastdfs-storage:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/fastdfs:latest       # 原镜像`delron/fastdfs`
    container_name: storage
    volumes:
      - ./fastdfs/nginx.conf:/usr/local/nginx/conf/nginx.conf # Nginx配置文件
      #      - ./fastdfs/storage.conf:/etc/fdfs/storage.conf # http访问配置
      - ./fastdfs/storage_data:/var/fdfs # 文件数据
    environment:
      - TRACKER_SERVER=192.168.0.88:22122 # TODO 修改为自己的ip地址
      - GROUP_NAME=group1
    command: storage
    depends_on:
      - fastdfs-tracker
    ports:
      - "8888:8888"
      - "23000:23000"

vim fastdfs/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;

  server {
    listen       8888;
    server_name  localhost;
    location ~/group[0-9]/ {
      ngx_fastdfs_module;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root html;
    }
  }


  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #    listen       8000;
  #    listen       somename:8080;
  #    server_name  somename  alias  another.alias;

  #    location / {
  #        root   html;
  #        index  index.html index.htm;
  #    }
  #}


  # HTTPS server
  #
  #server {
  #    listen       443 ssl;
  #    server_name  localhost;

  #    ssl_certificate      cert.pem;
  #    ssl_certificate_key  cert.key;

  #    ssl_session_cache    shared:SSL:1m;
  #    ssl_session_timeout  5m;

  #    ssl_ciphers  HIGH:!aNULL:!MD5;
  #    ssl_prefer_server_ciphers  on;

  #    location / {
  #        root   html;
  #        index  index.html index.htm;
  #    }
  #}

}

启动及测试图片上传

### FastDFS - 分布式文件系统

```shell
docker-compose -f docker-compose-fastdfs.yml -p fastdfs up -d


###### 测试


# 等待出现如下日志信息:
# [2020-07-24 05:57:40] INFO - file: tracker_client_thread.c, line: 310, successfully connect to tracker server 192.168.0.88:22122, as a tracker client, my ip is 172.31.0.3

# 进入storage容器
docker exec -it fastdfs_storage /bin/bash
# 进入`/var/fdfs`目录
cd /var/fdfs
# 执行如下命令,会返回在storage存储文件的路径信息,然后拼接上ip地址即可测试访问
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
# ex:
http://127.0.0.1:8888/group1/M00/00/00/rBEAAl8aYsuABe4wAAhfG6Hv0Jw357.jpg