# docker-compose-fastdfs
**Repository Path**: yeyuxi/docker-compose-fastdfs
## Basic Information
- **Project Name**: docker-compose-fastdfs
- **Description**: 这是一个文件管理服务
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-05-16
- **Last Updated**: 2024-05-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Docker-compose 安装FastDfs(文件管理服务)
#### 运行文件安装FastDfs
```bash
docker-compose up --build -d
```
#### 使用docker-compose运行项目
```bash
#安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#运行如下命令,有输入版本,表示docker-compose 可以用了
docker-compose --version
#在当前目录执行如下命令即可以运行app
# 具体查看文件路径liunx目录层级 运行项目外层的docker-compose 以及nginx/redis中的docker-compose.yaml
docker-compose up --build -d
```
# liunx目录层级
```docker-compose-script
├─docker-compose.yaml # 运行文件
└───fastdfs # fastdfs(文件管理服务)
├─storage_data # 文件
│ └─test.jpg # 可进容器中测试是否成功
├─tracker_data #
└─nginx.conf # nginx配置文件访问端口等信息
```
# 部署完成, 启动后, 可进容器进行测试
```shell
### FastDFS - 分布式文件系统
# docker-compose -f docker-compose-fastdfs.yml -p fastdfs up -d
docker-compose up -d
# 进入storage容器, 根据docker-compose.yaml启动镜像名称
docker exec -it fastdfs_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
```
# python脚本运行测试
```python脚本运行测试
# 使用fdfs_client先下载 pip install py3Fdfs==2.2.0
from fdfs_client.client import get_tracker_conf, Fdfs_client
tracker_conf = get_tracker_conf('./client.conf')
client = Fdfs_client(tracker_conf)
#文件上传
result = client.upload_by_filename('Snipaste_2024-04-09_16-35-22.png')
print(result)
# {'Group name': b'group1', 'Remote file_id': b'group1/M00/00/00/rBMGZWCeGhqAR_vRAAIAABZebgw.sqlite', 'Status': 'Upload successed.', 'Local file name': './db.sqlite3', 'Uploaded size': '128.00KB', 'Storage IP': b'101.133.225.166'}
# 访问地址即可下载:http://101.133.225.166:8888/group1/M00/00/00/rBMGZWCeGhqAR_vRAAIAABZebgw.sqlite
# 文件下载 文件下载需要将三方包中的文件替换, 否则将一直报错 下载超时 替换文件stirage_client.py
# result = client.download_to_file('./a.png', b'group1/M00/00/00/rBsAA2ZEhpCAcumSAAASeKLgwRM920.png')
# print(result)
#文件删除
# result = client.delete_file(b'group1/M00/00/00/rBsAA2ZEhpCAcumSAAASeKLgwRM920.png')
# print(result)
# ('Delete file successed.', b'group1/M00/00/00/rBMGZWCeGhqAR_vRAAIAABZebgw.sqlite', b'101.133.225.166')
#列出所有的group信息
# result = client.list_all_groups()
# print(result)
```