159 lines
3.8 KiB
Bash
159 lines
3.8 KiB
Bash
#!/bin/bash
|
||
|
||
# MinIO容器名称
|
||
CONTAINER_NAME="minio"
|
||
# MinIO镜像版本
|
||
MINIO_VERSION="RELEASE.2025-07-23T15-54-02Z"
|
||
# 映射端口(API:控制台)
|
||
PORT_API="9000"
|
||
PORT_CONSOLE="9001"
|
||
# 环境变量配置
|
||
MINIO_ROOT_USER="admin"
|
||
MINIO_ROOT_PASSWORD="Pcitc@123"
|
||
MINIO_CONSOLE_ACKNOWLEDGE_AGPL="yes"
|
||
# 网络配置
|
||
NETWORK="scm-net"
|
||
# 容器IP
|
||
CONTAINER_IP="172.20.0.3"
|
||
# 数据存储路径
|
||
DATA_PATH="/docker-data/minio/data"
|
||
|
||
# 创建目录并设置权限函数
|
||
create_dirs() {
|
||
# 创建数据目录并设置权限
|
||
if [ ! -d "$DATA_PATH" ]; then
|
||
mkdir -p "$DATA_PATH"
|
||
echo "创建数据目录: $DATA_PATH"
|
||
chmod -R 777 "$DATA_PATH"
|
||
echo "设置数据目录权限: $DATA_PATH"
|
||
fi
|
||
|
||
|
||
}
|
||
|
||
# 部署MinIO
|
||
deploy() {
|
||
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
|
||
echo "MinIO容器 $CONTAINER_NAME 已存在并运行中"
|
||
return 1
|
||
fi
|
||
|
||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||
echo "发现已停止的MinIO容器,正在启动..."
|
||
docker start $CONTAINER_NAME
|
||
return 0
|
||
fi
|
||
|
||
echo "开始部署MinIO容器..."
|
||
create_dirs
|
||
|
||
docker run -d --restart always \
|
||
--net=$NETWORK --ip=$CONTAINER_IP \
|
||
-p $PORT_API:9000 \
|
||
-p $PORT_CONSOLE:9001 \
|
||
--name $CONTAINER_NAME \
|
||
-e "MINIO_ROOT_USER=$MINIO_ROOT_USER" \
|
||
-e "MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD" \
|
||
-e "MINIO_CONSOLE_ACKNOWLEDGE-AGPL=yes" \
|
||
-v $DATA_PATH:/data \
|
||
minio/minio:$MINIO_VERSION server /data --console-address ":9001"
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo "MinIO容器部署成功!"
|
||
echo "容器名称: $CONTAINER_NAME"
|
||
echo "API端口映射: $PORT_API"
|
||
echo "控制台端口映射: $PORT_CONSOLE"
|
||
else
|
||
echo "MinIO容器部署失败!"
|
||
fi
|
||
}
|
||
|
||
# 查看日志
|
||
logs() {
|
||
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||
echo "MinIO容器 $CONTAINER_NAME 不存在"
|
||
return 1
|
||
fi
|
||
|
||
echo "查看MinIO容器日志 (按Ctrl+C退出)..."
|
||
docker logs -f --tail 200 $CONTAINER_NAME
|
||
}
|
||
|
||
# 重启容器
|
||
restart() {
|
||
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||
echo "MinIO容器 $CONTAINER_NAME 不存在"
|
||
return 1
|
||
fi
|
||
|
||
echo "正在重启MinIO容器..."
|
||
docker restart $CONTAINER_NAME
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo "MinIO容器重启成功!"
|
||
else
|
||
echo "MinIO容器重启失败!"
|
||
fi
|
||
}
|
||
|
||
# 删除容器
|
||
remove() {
|
||
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||
echo "MinIO容器 $CONTAINER_NAME 不存在"
|
||
return 1
|
||
fi
|
||
|
||
echo "警告:此操作将删除MinIO容器,但数据目录会保留"
|
||
read -p "确定要删除吗?(y/n) " confirm
|
||
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
|
||
echo "取消删除操作"
|
||
return 0
|
||
fi
|
||
|
||
echo "正在停止并删除MinIO容器..."
|
||
docker stop $CONTAINER_NAME
|
||
docker rm $CONTAINER_NAME
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo "MinIO容器删除成功!"
|
||
echo "数据保留在: $DATA_PATH"
|
||
else
|
||
echo "MinIO容器删除失败!"
|
||
fi
|
||
}
|
||
|
||
# 显示帮助
|
||
show_help() {
|
||
echo "MinIO容器管理脚本"
|
||
echo "用法: $0 [命令]"
|
||
echo "命令列表:"
|
||
echo " deploy - 部署并启动MinIO容器"
|
||
echo " logs - 查看MinIO容器日志"
|
||
echo " restart - 重启MinIO容器"
|
||
echo " remove - 删除MinIO容器(保留数据)"
|
||
echo " help - 显示帮助信息"
|
||
}
|
||
|
||
# 主逻辑
|
||
case "$1" in
|
||
deploy)
|
||
deploy
|
||
;;
|
||
logs)
|
||
logs
|
||
;;
|
||
restart)
|
||
restart
|
||
;;
|
||
remove)
|
||
remove
|
||
;;
|
||
help)
|
||
show_help
|
||
;;
|
||
*)
|
||
echo "未知命令: $1"
|
||
show_help
|
||
exit 1
|
||
;;
|
||
esac |