目录结构
├─docker-compose.yaml # 运行文件
└───fastdfs # fastdfs(文件管理服务)
├─storage_data # 文件
│ └─test.jpg # 可进容器中测试是否成功
├─tracker_data #
└─nginx.conf # nginx配置文件访问端口等信息
docker-compose.yaml配置
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
environment:
- TRACKER_SERVER=You_Server_Ip:22122 # TODO 修改为自己的ip地址 起到固定ip作用, 反之启动容器后会存在虚拟ip
- GROUP_NAME=group1
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=You_Server_Ip:22122 # TODO 修改为自己的ip地址
- GROUP_NAME=group1
command: storage
depends_on:
- fastdfs-tracker
ports:
- "8888:8888"
- "23000:23000"
nginx.conf代码
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
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;
}
}
}
其中根据目录结构创建 文件夹, 对于storage_data中放置一个文件, 这里我放的是图片, 在服务启动后, 将在容器中测试是否上传图片成功使用
***开启外部访问端口, 23000, 22122, 8888***
# 运行服务 -d为后台
docker-compose up -d
# 进入storage容器, 根据docker-compose.yaml启动镜像名称
docker exec -it storage bash
# 进入`/var/fdfs`目录
cd /var/fdfs
# 执行如下命令,会返回在storage存储文件的路径信息,然后拼接上ip地址即可测试访问
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
# 执行成功后, 返回示例
group1/M00/00/00/rBEAAl8aYsuABe4wAAhfG6Hv0Jw357.jpg
# 访问:
http://ip:8888/group1/M00/00/00/rBEAAl8aYsuABe4wAAhfG6Hv0Jw357.jpg