1、docker desktop 安装
docker run -d --name minio -p 9000:9000 -p 9001:9001 -e "MINIO_ROOT_USER=minioadmin" -e "MINIO_ROOT_PASSWORD=minioadmin" -v %cd%/volumes/minio/data:/data quay.io/minio/minio server /data --console-address ":9001"
运行后:
-
API 端口:
http://localhost:9000 -
控制台端口:
http://localhost:9001 -
用户名/密码:
minioadmin/minioadmin
执行前请确保当前目录下存在 volumes/minio/data 文件夹
2、创建custom桶
# 导入Python内置模块
import os
import json
# 导入MinIO官方Python SDK核心类
from minio import Minio
# 项目内部配置与日志
from app.conf.minio_config import minio_config
from app.core.logger import logger
# 全局MinIO客户端对象,初始化后供全项目调用
minio_client = None
try:
# 初始化MinIO客户端实例
minio_client = Minio(
endpoint=minio_config.endpoint,
access_key=minio_config.access_key,
secret_key=minio_config.secret_key,
secure=False # 内网/本地部署用HTTP,公网部署需改为True并配置SSL
)
bucket_name = minio_config.bucket_name
# 检查存储桶是否存在,不存在则自动创建
if not minio_client.bucket_exists(bucket_name):
logger.info(f"MinIO存储桶[{bucket_name}]不存在,开始创建")
minio_client.make_bucket(bucket_name)
logger.info(f"MinIO存储桶[{bucket_name}]创建成功")
else:
logger.info(f"MinIO存储桶[{bucket_name}]已存在,无需重复创建")
# 配置存储桶公网只读策略:允许匿名用户通过URL直接访问桶内文件
bucket_policy = {
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {"AWS": ["*"]}, # *表示所有匿名用户(S3兼容标识)
"Action": ["s3:GetObject"], # 仅授权文件获取/访问操作
"Resource": [f"arn:aws:s3:::{bucket_name}/*"]
}]
}
minio_client.set_bucket_policy(bucket_name, json.dumps(bucket_policy))
logger.info(f"MinIO存储桶[{bucket_name}]已配置公网只读策略,支持匿名URL访问")
except Exception as e:
# 捕获初始化异常,记录错误日志并置空客户端
logger.error(f"MinIO客户端初始化失败,错误信息:{str(e)}", exc_info=True)
minio_client = None
def get_minio_client():
"""
获取全局初始化的MinIO客户端实例
:return: 已初始化的Minio对象 / None(初始化失败时)
"""
return minio_client
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号