Skip to content

Latest commit

 

History

History
286 lines (206 loc) · 6.28 KB

README.md

File metadata and controls

286 lines (206 loc) · 6.28 KB

filesystem

Docker Image CI GitHub Release GitHub Tag GitHub Tag GitHub Tag

基于 golang + gin 的简单文件系统

I. web 服务

0.0.0.0: 8000

用于 http 资源请求, 只能访问,不能上传

默认挂载目录: /var/www/filesystem

可以直接通过 web 端进行访问

  • 下载

下载条件:

  1. bucker1 桶下有 test.txt 文件
  2. bucket1 属性为公有可访问

http://localhost:8000/bucket1/test.txt

II. api 服务

0.0.0.0: 8001

api 服务需要进行身份认证, 需要在请求头添加 user,auth 进行身份认证

1. user

user 等级: system: 默认会自动生成一个 system 用户 admin: 管理用户 user: 不同用户, 只对自己创建的桶拥有权限

  • 添加用户
curl -X POST "${URL}/user" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
--header 'Content-Type: application/json' \
--data-raw '{"name": "i-curve","u_type": 2}'
  • 删除用户
curl -X DELETE "${URL}/user" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
--header 'Content-Type: application/json' \
--data-raw '{"name": "i-curve"}'

2. bucket

  • 创建 bucket
curl -X POST "${URL}/bucket" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
--header 'Content-Type: application/json' \
--data-raw '{"name": "bucket2", "b_type": 3}'
  • 删除 bucket
curl -X DELETE "${URL}/bucket" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
--header 'Content-Type: application/json' \
--data-raw '{"name": "bucket2"}'
  • 获取所有 bucket
curl -X GET "${URL}/bucket" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
--header 'Content-Type: application/json'

3. filesystem

  • 获取文件目录
curl -X GET "${URL}/file/catalog?path={path}" \
--header "user: ${USER}" \
--header "auth: ${AUTH}"
  • 文件上传

上传 a.txt 文件到 bucket1 的 test/01 内

curl -X POST "${URL}/file/upload" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
-F "file=@/root/a.txt" \
-F "bucket=bucket1" \
-F "key=/test/a.txt"
  • 文件下载
curl -X GET "${URL}/file/download?bucket=bucket1&key=/test/a.txt" \
--header "user: ${USER}" \
--header "auth: ${AUTH}"
  • 文件删除
curl -X DELETE "${URL}/file/delete" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
-d '{"bucket": "bucket", "key": "/test/01"}'
  • 文件移动
curl -X POST "${URL}/file/move" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
--header "Content-Type: application/json" \
-d '{"s_bucket": "bucket1",
"s_key": "test/a.txt","d_bucket": "bucket1","d_key":"test/b.txt"}'
  • 文件复制
curl -X POST "${URL}/file/copy" \
--header "user: ${USER}" \
--header "auth: ${AUTH}" \
--header "Content-Type: application/json" \
-d '{"s_bucket":"bucket1","s_key":"test/a.txt","d_bucket": "bucket1","d_key": "new_path/dd/b.txt"}'

4. admin

管理接口

权限刷新

当进行数据库更改后, 并不会直接生效, 需要进行权限刷新

curl -X POST "${URL}/refresh" \
--header "user: ${USER}" \
--header  "auth: ${AUTH}"
  • 获取版本信息
curl "${URL}/version" \
--header  "user: ${USER}" \
--header  "auth: ${AUTH}"

III. sdk

1. go sdk

repo: https://github.com/i-curve/filesystem-gosdk

2. python sdk

repo: https://github.com/i-curve/filesystem-pysdk

3. shell

repo: https://github.com/i-curve/filesystem-shell

IV. deploy

克隆项目

git clone https://github.com/i-curve/filesystem.git

构建程序

生成可执行文件 filesystem

cd filesystem && make

docker 构建

构建 docker 镜像

make docker

docker hub

拉取镜像

docker pull wjuncurve/filesystem:latest

运行 docker

docker run --name filesystem -d  \
 -p 8000:8000 -p 8001:8001 \
 -e "MYSQL_HOST=host.docker.internal" \
    filesystem
变量名 说明
LANGUAGE 程序运行语言,默认 zh 中文(en 可选)
MODE 运行模式 (DEBUG | RELEASE)
BASE_DIR 默认程序存储目录为(/var/www/filesystem)
MYSQL_HOST 数据库地址
MYSQL_USER 数据库用户
MYSQL_PASSWORD 数据库密码
MYSQL_PORT 数据库端口
DATABASE 数据库名 (默认 filesystem)

5. 检测是否部署成功

查看版本信息

curl "http://localhost:8001/version"

查看生成 system 用户信息

docker logs filesystem
system user
user: system
auth: d6837f276686cbfe4852c8d8c5104f59