1. 单容器部署(推荐新手)
方式一:使用现成镜像(最简单)
# 拉取镜像
docker pull delron/fastdfs
# 运行 Tracker 服务
docker run -d --name tracker \
-p 22122:22122 \
-v /data/fastdfs/tracker:/var/fdfs \
delron/fastdfs tracker
# 运行 Storage 服务
docker run -d --name storage \
--net=host \
-v /data/fastdfs/storage:/var/fdfs \
-e TRACKER_SERVER=your_server_ip:22122 \
-e GROUP_NAME=group1 \
delron/fastdfs storage
2. 使用 docker-compose 部署(生产推荐)
docker-compose.yml 文件
version: '3'
services:
fastdfs-tracker:
image: delron/fastdfs
container_name: fastdfs-tracker
restart: always
ports:
- "22122:22122"
volumes:
- ./tracker_data:/var/fdfs
command: tracker
fastdfs-storage:
image: delron/fastdfs
container_name: fastdfs-storage
restart: always
depends_on:
- fastdfs-tracker
volumes:
- ./storage_data:/var/fdfs
environment:
- TRACKER_SERVER=fastdfs-tracker:22122
command: storage
# 如果需要外网访问,使用 network_mode: "host"
# network_mode: "host"
启动服务
# 创建目录
mkdir -p ./tracker_data ./storage_data
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
3. 官方镜像部署(更灵活)
使用 season/fastdfs 镜像
# 创建配置文件目录
mkdir -p /opt/fastdfs/{tracker,storage}
# 启动 Tracker
docker run -d --name tracker \
-p 22122:22122 \
-v /opt/fastdfs/tracker:/fastdfs/tracker/data \
season/fastdfs:1.2 tracker
# 启动 Storage(带 Nginx)
docker run -d --name storage \
-p 23000:23000 \
-p 8888:8888 \
-v /opt/fastdfs/storage:/fastdfs/storage/data \
-e TRACKER_SERVER=192.168.1.100:22122 \
season/fastdfs:1.2 storage
4. 自定义配置部署
步骤 1:准备配置文件
tracker.conf
# tracker 服务端口
port=22122
# 存储路径
base_path=/fastdfs/tracker
storage.conf
# tracker服务器地址
tracker_server=tracker:22122
# storage服务端口
port=23000
# 存储路径
base_path=/fastdfs/storage
store_path0=/fastdfs/storage
步骤 2:编写 Dockerfile
FROM ubuntu:20.04
# 安装依赖
RUN apt-get update && apt-get install -y \
wget \
gcc \
make \
libpcre3-dev \
libssl-dev \
libfastcommon-dev \
&& rm -rf /var/lib/apt/lists/*
# 下载 FastDFS
WORKDIR /tmp
RUN wget https://github.com/happyfish100/fastdfs/archive/V6.08.tar.gz \
&& tar -zxvf V6.08.tar.gz \
&& cd fastdfs-6.08 \
&& ./make.sh \
&& ./make.sh install
# 复制配置文件
COPY tracker.conf /etc/fdfs/tracker.conf
COPY storage.conf /etc/fdfs/storage.conf
# 启动脚本
COPY start.sh /usr/bin/start.sh
RUN chmod +x /usr/bin/start.sh
EXPOSE 22122 23000 8888
CMD ["/usr/bin/start.sh"]
步骤 3:启动脚本 start.sh
#!/bin/bash
if [ "$1" = "tracker" ]; then
fdfs_trackerd /etc/fdfs/tracker.conf
elif [ "$1" = "storage" ]; then
fdfs_storaged /etc/fdfs/storage.conf
fi
# 保持容器运行
tail -f /dev/null
5. 完整部署示例(带 Nginx 模块)
version: '3.8'
services:
tracker:
image: season/fastdfs:1.2
container_name: tracker
restart: always
ports:
- "22122:22122"
volumes:
- ./data/tracker:/fastdfs/tracker/data
command: tracker
networks:
- fastdfs-net
storage:
image: season/fastdfs:1.2
container_name: storage
restart: always
depends_on:
- tracker
volumes:
- ./data/storage:/fastdfs/storage/data
environment:
- TRACKER_SERVER=tracker:22122
ports:
- "23000:23000"
- "8888:8888"
command: storage
networks:
- fastdfs-net
nginx:
image: nginx:1.21
container_name: fastdfs-nginx
restart: always
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./data/storage:/data
depends_on:
- storage
networks:
- fastdfs-net
networks:
fastdfs-net:
driver: bridge
6. 测试 FastDFS 服务
# 进入容器
docker exec -it storage bash
# 测试上传
cd /var/fdfs
echo "Hello FastDFS" > test.txt
fdfs_upload_file /etc/fdfs/client.conf test.txt
# 通过 Nginx 访问
curl http://localhost/group1/M00/00/00/test.txt
7. 注意事项
数据持久化:一定要挂载数据卷,防止数据丢失
网络模式:生产环境建议使用 host 网络模式或自定义网络
端口开放:
- Tracker: 22122
- Storage: 23000
- Nginx: 80/8888
集群部署:修改 tracker_server 配置,支持多个 tracker
性能优化:调整 storage 的 store_path 数量
8. 故障排查
# 查看服务状态
docker ps -a
docker logs tracker
docker logs storage
# 进入容器检查配置
docker exec -it tracker cat /etc/fdfs/tracker.conf
docker exec -it storage fdfs_monitor /etc/fdfs/client.conf
这样你就可以快速部署一个 FastDFS 文件存储服务了。根据实际需求选择合适的部署方式。