Java开发环境搭建之 8.使用Docker Compose 安装部署 MinIO
环境:
OS:Ubuntu24
1.创建目录并设置权限:
## 在 Docker 容器外部(即 Ubuntu 主机上)手动创建 /var/data/minio/data 目录。
sudo mkdir -p /var/data/minio/data
# 推荐方式:更改所有者(MinIO容器默认用户UID为1001)
# sudo chown -R 1001:1001 /var/data/minio/data
# 或简易方式:放宽权限(用于快速测试)
sudo chmod -R 777 /var/data/minio/data
原因分析:
A.) 权限问题(最关键的原因):
MinIO 容器默认以 minio-user 用户(UID 1001, GID 1001)运行,而不是 root。
如果你不预先创建目录,Docker 会在启动时自动创建 ./minio/data,但这个目录的所有者将是 root。
当 MinIO 进程(用户 minio-user)尝试向这个由 root 拥有的目录写入数据时,会权限不足(Permission Denied),导致容器启动失败或无法正常运行。
B.)可维护性和明确性:
手动创建目录让你能清楚地知道数据的确切存储位置。
你可以有意识地设置该目录的权限(例如 chmod 775),甚至更改其所有者,确保一切都在你的掌控之中。
2.创建yml文件
vim docker-compose.yml
``
minio:
# image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/minio:RELEASE.2023-03-20T20-16-18Z
image: minio/minio:latest ### 最新版本镜像, 也不支持中文
container_name: minio
privileged: true
restart: always
ports:
# API接口访问端口 ## MinIO 容器内部的默认 API 端口是 9000
- 9090:9090
# Web管理访问端口
- 9001:9001
environment:
# Web管理用户名
MINIO_ROOT_USER: admin
#Web管理密码
MINIO_ROOT_PASSWORD: admin123
# 设置默认语言为中文
MINIO_BROWSER_DEFAULT_LOCALE: "zh_CN" # 设置默认语言为中文
volumes:
# 文件目录映射
## 语法:主机目录:容器内目录
## 用途:这是最核心的数据持久化映射。
## 详细解释:
### ./minio/data:这是宿主机(你的 Ubuntu 系统)上的一个目录路径(如上所述)。
### /data:这是 MinIO 容器内部的目录路径,MinIO 服务会默认将它所有的数据(用户创建的文件、桶、配置等)存储在这个位置。
### 作用:将容器内的 /data 目录“挂载”到主机上的 ./minio/data 目录。这样,MinIO 写入容器内 /data 的数据,实际上被永久地保存到了主机磁盘上。
### 即使你删除并重新创建了 MinIO 容器,只要新的容器继续使用这个映射,之前的所有数据都会完好无损。 如果没有这个映射,数据会随着容器的删除而丢失。
- /var/data/minio/data:/minio/data
## 用途:同步容器与宿主机的系统时间(时区)。
### 详细解释:
### /etc/localtime:在 Linux 系统中,这个文件定义了系统的时区设置(例如 Asia/Shanghai)。
### 通过将这个文件以只读 (ro) 的方式映射到容器内同样的路径,容器内的系统时间就会使用和宿主机完全相同的时区设置。
### 作用:确保 MinIO 记录的文件时间戳、日志时间等与宿主机及其他系统保持一致,避免出现时间错乱的问题。
- /etc/localtime:/etc/localtime:ro
## 用途:同样是用于同步时间设置,作为上一行的补充。
- /etc/timezone:/etc/timezone:ro
# 启动minio容器服务执行命令
# 必须指定固定端口:Web管理后台是动态端口 /data参数是容器内部数据目录
command: server /minio/data --console-address ":9001" --address ":9090" # 增加 -- address ":9090"
# 新增:网络配置,集成到现有网络中
networks:
network:
ipv4_address: 177.7.0.19 # 请分配一个未被使用的IP,例如177.7.0.19
- 启动 MinIO 服务
docker-compose up -d
- 验证:
使用 docker-compose logs minio 查看日志,如果没有权限错误,并且提示 Status: 1 Online, 0 Offline 等正常信息,则说明成功。
5. 在服务器上的防火墙放行端口:
云服务商(腾讯云、阿里云、AWS等)都有安全组功能,它相当于一个云防火墙,默认只开放少数常用端口(如22, 80, 443),其他所有端口(包括9000, 9001)都是关闭的。
如果没有放行端口,是访问不了的,如下图所示:
操作:登录到您的云服务器管理控制台,找到“安全组”配置。
修改:为您这台服务器的安全组添加一条入站规则(Inbound Rule)。
类型:自定义 TCP
端口范围:9090;9001 (或者分开两条规则:9090 和 9001)
源:0.0.0.0/0 (允许所有IP访问) 或 您的本地IP地址(更安全)
策略:允许
保存后通常立即生效。


- 访问
MinIO 管理控制台:http://<您的服务器IP>:9001
MinIO API 服务: http://<您的服务器IP>:9090
使用 admin/admin123 登录,如果能成功进入管理界面并创建存储桶,说明一切正常。
以下为最新版本的MinIO界面:
注意事项
不要指望可以配置支持中文界面的 MinIO 服务成功。反正我配置了半天,还是配置失败 !
更多推荐


所有评论(0)