MinIo开发环境配置方案(Docker版本)

目录

本地开发配置(简化版):

  • 使用HTTP

  • 简单的密码(方便开发)

  • 不需要SSL证书

生产环境配置(增强版):

  • 使用HTTPS

  • 强密码(从环境变量文件或Docker secrets获取)

  • 资源限制

  • 日志配置

  • 健康检查

  • 可能的分布式部署(这里先给单机生产配置)

创建配置文件:

  • docker-compose.yml 用于开发或生产

同时,创建对应的环境变量文件:

  • .env 用于dev 或prod

注意:生产环境配置需要SSL证书,将假设证书已放置在指定的目录中。

步骤:

  • 开发配置(基于现有的简化配置)

  • 生产配置(增加SSL、安全设置等)

开发与生产环境配置方案

1. 生产环境 docker-compose.yml

bash 复制代码
version: '3.8'

services:
  minio:
    image: minio/minio:RELEASE.2024-12-19T12-27-05Z  # 生产环境使用固定版本
    container_name: minio_production
    restart: always
    hostname: minio
    ports:
      - "${MINIO_PORT:-9000}:9000"
      - "${MINIO_CONSOLE_PORT:-9001}:9001"
    environment:
      MINIO_ROOT_USER: ${MINIO_ROOT_USER}
      MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
      MINIO_SERVER_URL: ${MINIO_SERVER_URL}
      MINIO_BROWSER_REDIRECT_URL: ${MINIO_BROWSER_REDIRECT_URL}
      MINIO_REGION: ${MINIO_REGION:-cn-east-1}
      MINIO_PROMETHEUS_AUTH_TYPE: "public"
      MINIO_BROWSER: "on"
      # 生产环境可选的SSL配置
      MINIO_ARGS: "${MINIO_ARGS:---certs-dir /root/.minio/certs}"
    volumes:
      - ${MINIO_DATA_DIR:-./data}:/data
      - ${MINIO_CONFIG_DIR:-./config}:/root/.minio
      - ${CERTS_DIR:-./certs}:/root/.minio/certs  # SSL证书目录
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    command: server /data --console-address ":9001"
    healthcheck:
      test: ["CMD", "minio", "ready"]
      interval: 30s
      timeout: 20s
      retries: 3
      start_period: 30s
    networks:
      - minio_network
    deploy:
      resources:
        limits:
          memory: 4G
          cpus: '2'
        reservations:
          memory: 2G
          cpus: '1'
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"
    security_opt:
      - no-new-privileges:true
    read_only: false  # 数据目录需要写权限

  # MinIO客户端,用于自动化管理
  mc:
    image: minio/mc:latest
    container_name: minio_client
    restart: unless-stopped
    entrypoint: >
      /bin/sh -c "
      echo 'Waiting for MinIO to be ready...';
      until curl -s ${MINIO_SERVER_URL}/minio/health/live > /dev/null; do
        sleep 2;
      done;
      echo 'Setting up MinIO client...';
      /usr/bin/mc alias set minio ${MINIO_SERVER_URL} ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD} --api s3v4;
      /usr/bin/mc mb minio/backup 2>/dev/null || true;
      /usr/bin/mc mb minio/temp 2>/dev/null || true;
      /usr/bin/mc mb minio/logs 2>/dev/null || true;
      echo 'MinIO client ready.';
      tail -f /dev/null
      "
    depends_on:
      - minio
    networks:
      - minio_network

networks:
  minio_network:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.22.0.0/16

2. 生产环境 .env 文件

bash 复制代码
# ==============================================
# MinIO 生产环境配置
# ==============================================
# 重要:此文件包含敏感信息,切勿提交到版本控制系统!

# 1. 管理员凭据 - 必须使用强密码!
# 生成命令:openssl rand -base64 32
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=YourStrongPasswordHere!@#123

# 2. 服务访问地址 - 根据实际部署环境配置
# 选项A:HTTPS + 域名(推荐)
MINIO_SERVER_URL=https://storage.yourdomain.com
MINIO_BROWSER_REDIRECT_URL=https://console.storage.yourdomain.com

# 选项B:HTTPS + IP地址
# MINIO_SERVER_URL=https://192.168.1.100:9000
# MINIO_BROWSER_REDIRECT_URL=https://192.168.1.100:9001

# 选项C:HTTP + 内网访问(仅测试用)
# MINIO_SERVER_URL=http://localhost:9000
# MINIO_BROWSER_REDIRECT_URL=http://localhost:9001

# 3. 存储区域 - 根据服务器地理位置设置
MINIO_REGION=cn-east-1

# 4. 端口配置
MINIO_PORT=9000
MINIO_CONSOLE_PORT=9001

# 5. 存储路径 - 建议使用独立磁盘挂载
MINIO_DATA_DIR=/mnt/minio/data
MINIO_CONFIG_DIR=/mnt/minio/config

# 6. SSL证书路径
CERTS_DIR=/etc/minio/certs

# 7. 可选:自定义启动参数
# MINIO_ARGS=--certs-dir /root/.minio/certs --address ":9000"

3. 开发环境 docker-compose.yml

(开发为简化配置可不使用环境变量,但生产需要。)

bash 复制代码
version: '3.8'

services:
  minio:
    image: minio/minio:latest
    container_name: minio_dev
    restart: unless-stopped
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      # 直接使用硬编码值,避免环境变量问题
      MINIO_ROOT_USER: "admin"
      MINIO_ROOT_PASSWORD: "admin123"
      # 可选:如果不需要重定向可以注释掉
      # MINIO_SERVER_URL: "http://localhost:9000"
      # MINIO_BROWSER_REDIRECT_URL: "http://localhost:9001"
    volumes:
      - ./data:/data
      - ./config:/root/.minio
    command: server /data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

4. 一些必要配置文件说明

XML 复制代码
minio-project/
├── .env.example                  # 配置示例文件
├── .env.development             # 开发环境配置
├── .env.production              # 生产环境配置
├── docker-compose.yml           # 基础配置
├── docker-compose.override.yml  # 环境特定配置(自动生成)
├── docker-compose.dev.yml       # 开发环境配置
├── deploy.sh                    # 部署脚本
├── switch-env.sh                # 环境切换脚本
├── scripts/                     # 其他脚本
│   ├── backup.sh               # 备份脚本
│   ├── restore.sh              # 恢复脚本
│   └── monitor.sh              # 监控脚本
├── certs/                       # SSL证书目录(生产环境)
│   ├── private.key
│   └── public.crt
├── data/                        # 数据存储目录
├── config/                      # 配置目录
└── README.md                    # 项目说明文档

日常管理

bash 复制代码
# 查看状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 启动服务
docker-compose up -d

5. 生产环境安全建议

  1. 必须修改的项

    • 修改默认密码为强密码

    • 使用HTTPS而不是HTTP

    • 配置防火墙,只允许必要IP访问

    • 启用访问日志审计

  2. 定期维护

    • 定期备份配置和数据

    • 监控磁盘使用率

    • 更新MinIO版本(注意测试兼容性)

  3. 监控告警

    • 配置Prometheus监控

    • 设置磁盘空间告警

    • 监控API访问频率

相关推荐
Data_Journal3 小时前
Scrapy vs. Crawlee —— 哪个更好?!
运维·人工智能·爬虫·媒体·社媒营销
YMWM_3 小时前
不同局域网下登录ubuntu主机
linux·运维·ubuntu
zmjjdank1ng3 小时前
restart与reload的区别
linux·运维
Suchadar3 小时前
Docker常用命令
运维·docker·容器
Bruk.Liu3 小时前
Gitea Actions 的概念及基础使用
运维·ci/cd·持续集成
yanlou2333 小时前
[C++/Linux HTTP项目] HTTP服务器基于muduo高性能服务器搭载【深入详解】
运维·服务器·http·muduo库·http高性能服务器
杨江3 小时前
frp macbook 的18789到 公网服务器上,访问报错:disconnected (1008): unauthorized:
运维
天空属于哈夫克34 小时前
企微第三方 RPA API:非官方接口与官方接口的差异解析及选型建议
运维·服务器
niceffking4 小时前
linux 信号内核模型
linux·运维·服务器