minio
Minio是一個非常輕量的對象存儲服務。
Github: minio
它本身不支持文件的版本管理。如果有這個需求,可以用 s3git 搭配使用。
Github: s3git
安裝
minio 文檔有列出各平臺的安裝方式。這裏只說 docker 的方式。
docker-compose.yml
version: "3"
services:
minio:
image: minio/minio
volumes:
- minio-data:/data
ports:
- "9080:9000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server /data
volumes:
minio-data:
將上面內容保存爲 docker-compose.yml 文件。然後在這個文件所在的文件夾內執行 docker-compose up -d
。minio 服務就啓動了。
minio 界面
服務啓動後,訪問 http://127.0.0.1:9080 進入登錄界面:
輸入上面設置的 access key:minio 和 secret key:minio123,登錄。
圖中 1 是上傳一個文件;圖中 2 是創建一個 bucket (儲存區)。
文件必須上傳到某一個存儲區裏面,因此必須先創建一個 bucket。
文件上傳後,一旦選擇文件,就會在頂部出現刪除和下載的操作按鈕。
在 Laravel 裏使用
配置
- 引入包
composer require league/flysystem-aws-s3-v3
修改 config/filesystems.php
... 'cloud' => env('FILESYSTEM_CLOUD', 'minio'), ... 'disks' => [ ... 'minio' => [ 'driver' => 's3', 'endpoint' => env('MINIO_ENDPOINT'), 'use_path_style_endpoint' => true, 'key' => env('MINIO_ACCESS_KEY_ID'), 'secret' => env('MINIO_SECRET_ACCESS_KEY'), 'region' => env('MINIO_DEFAULT_REGION'), 'bucket' => env('MINIO_BUCKET'), ], ... ]
修改 .env
FILESYSTEM_CLOUD=minio MINIO_ENDPOINT="http://127.0.0.1:9080" MINIO_ACCESS_KEY_ID=minio MINIO_SECRET_ACCESS_KEY=minio123 MINIO_DEFAULT_REGION=cn-north-1 MINIO_BUCKET=剛創建的bucket名稱
嘗試
- 打開 tinker
php artisan tinker
- 存儲
Storage::cloud()->put('hello.json', '{"hello": "world"}');
結果:true - 取出
Storage::cloud()->get('hello.json');
結果:{"hello": "world"}