#!/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