docker部署Fastdfs
为了通过 Docker 安装 FastDFS
并使其支持外部通过 HTTP 访问文件,我们需要配置一个包含 FastDFS
存储(storage)和跟踪(tracker)服务的环境,并正确设置 Nginx 或 HTTP 服务来提供文件访问。
以下是具体步骤:
1. 环境准备
确保你的服务器已安装 Docker 和 Docker Compose。如果未安装,可以参考以下命令:
# 安装 Docker
sudo apt update -y
sudo apt install -y docker.io
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
2. 拉取 FastDFS 镜像
使用以下命令从 Docker Hub 拉取 FastDFS
和带 HTTP 服务的镜像(如包含 Nginx 的 FastDFS 镜像):
docker pull delron/fastdfs-nginx
这个镜像整合了 FastDFS 的 tracker、storage 和 Nginx 服务,可直接用于文件管理和 HTTP 文件访问。
3. 编写 docker-compose.yml
创建一个名为 docker-compose.yml
的文件,并添加以下内容:
version: '3.9'
services:
tracker:
image: ygqygq2/fastdfs-nginx
container_name: fastdfs-tracker
ports:
- "22122:22122"
volumes:
- /data/fastdfs/tracker:/var/fdfs
environment:
TRACKER_SERVER_PORT: 22122
command: tracker
storage:
image: ygqygq2/fastdfs-nginx
container_name: fastdfs-storage
ports:
- "23000:23000"
- "8888:8080" # HTTP 服务端口
depends_on:
- tracker
volumes:
- /data/fastdfs/storage:/var/fdfs
environment:
TRACKER_SERVER_PORT: 22122
TRACKER_SERVER: fastdfs-tracker:22122
STORAGE_SERVER_PORT: 23000
GROUP_NAME: group1
NGINX_PORT: 8888
command: storage
4. 启动服务
运行以下命令启动 FastDFS
:
sudo docker-compose up -d
启动后会创建三个容器:
fastdfs-tracker
: 负责跟踪管理。fastdfs-storage
: FastDFS 的存储服务,存放文件。fastdfs-nginx
: 用于外部访问的 Nginx 服务。
5. 配置文件访问
FastDFS 默认生成的 HTTP URL 格式为:
http://<your-server-ip>:8080/group1/M00/xx/xx/filename
例如:
http://192.168.0.100:8080/group1/M00/00/00/sample_file.jpg
文件上传测试
-
进入存储容器:
docker exec -it fastdfs-storage /bin/bash
```
-
上传文件:
使用fdfs_upload_file
命令上传文件:fdfs_upload_file /etc/fdfs/client.conf /path/to/your/file.jpg
```
上传成功后,会返回类似如下的文件路径:
group1/M00/00/00/wKhiyVdfkweA.jpg
  ```
3. **通过 HTTP 访问**:
  在浏览器中访问下面的 URL:
http://:8080/group1/M00/00/00/wKhiyVdfkweA.jpg
```
<your-server-ip>
6. 数据持久化与防火墙配置
数据持久化:
确保 tracker_data
, storage_data
, nginx_data
挂载成功,以防 FastDFS 服务重启后数据丢失。
开放防火墙端口:
确保以下端口对外开放,以支持访问:
- 22122 (tracker 服务)
- 23000 (storage 服务)
- 8080 (HTTP 文件访问)
7. 常见问题处理
- 返回 404 错误:
- 确保 Nginx 已正确挂载
FastDFS
目录。 - 确保文件路径返回与 URL 一致。
- 确保 Nginx 已正确挂载
- HTTP 访问异常:
- 确保
TRACKER_SERVER
在docker-compose.yml
中被正确设置为 tracker 容器的主机名和端口。 - 检查防火墙规则,确保端口 8080 开放。
- 确保
- 挂载时数据无法保存:
- 检查
docker-compose.yml
文件中volumes
的文件挂载路径是否设置正确。 - 确保宿主机的挂载路径目录已有写入权限。
- 检查
通过上述步骤,你现在应该已经完成了基于 Docker 安装 FastDFS
的任务,并可以通过 HTTP 访问上传的文件了!