目录
本地开发配置(简化版):
使用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. 生产环境安全建议
-
必须修改的项:
-
修改默认密码为强密码
-
使用HTTPS而不是HTTP
-
配置防火墙,只允许必要IP访问
-
启用访问日志审计
-
-
定期维护:
-
定期备份配置和数据
-
监控磁盘使用率
-
更新MinIO版本(注意测试兼容性)
-
-
监控告警:
-
配置Prometheus监控
-
设置磁盘空间告警
-
监控API访问频率
-