Docker Compose 部署单节点 MinIO 用于开发调试
本文将介绍如何通过 Docker Compose 在本地快速部署单节点 MinIO 服务器,以便于开发和调试使用。MinIO 是一个高性能、S3 兼容的对象存储系统,特别适合在云原生应用中使用。
环境要求
- Docker 19.03 或更高版本
- Docker Compose 1.27.0 或更高版本
Docker Compose 配置详解
以下是我们使用的 docker-compose.yml 文件配置,它将启动一个 MinIO 容器,并映射所需的端口、设置环境变量以及存储路径。
docker-compose.yml
services:
minio:
image: minio/minio
restart: always
mem_limit: 1G
ports:
- "9000:9000"
- "19001:9001"
networks:
- custom
container_name: minio
hostname: minio
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=_admin123
volumes:
- ./storage/data:/data
- ./storage/config:/root/.minio
networks:
custom:
external: true
driver: bridge
配置说明
-
镜像与容器:
- 使用了官方的
minio/minio镜像。 container_name指定容器名称为minio,便于管理和日志查看。hostname设置为minio,方便容器内访问。
- 使用了官方的
-
端口映射:
9000:9000映射 MinIO 的 S3 API 端口。19001:9001映射 MinIO 控制台(Web UI)端口,可以通过浏览器访问http://localhost:19001。
-
资源限制:
mem_limit: 1G限制容器最大使用 1GB 内存,防止开发环境中资源耗尽。
-
网络:
- 使用名为
custom的外部网络,并设置驱动为bridge,确保容器与外部服务可以互联。
- 使用名为
-
环境变量:
MINIO_ROOT_USER和MINIO_ROOT_PASSWORD设置 MinIO 的 root 用户名与密码。在启动后,你可以通过这些凭据登录 MinIO 控制台。
-
挂载卷:
./storage/data:/data挂载本地存储目录到容器内部的/data,用于存储 MinIO 数据。./storage/config:/root/.minio挂载配置目录,存储 MinIO 的配置文件,确保容器重启后配置和数据不会丢失。
命令行参数
command: server /data --console-address ":9001" 指定 MinIO 启动时的参数,/data 为数据存储路径,--console-address ":9001" 用于指定控制台的监听端口。
启动 MinIO
确保你已经安装了 Docker 和 Docker Compose,并在项目根目录下创建了 docker-compose.yml 文件。
-
运行以下命令启动 MinIO 服务:
docker-compose up -d -
启动完成后,可以通过以下命令查看容器的运行状态:
docker-compose ps输出示例:
Name Command State Ports ---------------------------------------------------------------------- minio minio server /data --console- ... Up 0.0.0.0:9000->9000/tcp, 0.0.0.0:19001->9001/tcp -
访问 MinIO 控制台:
打开浏览器,访问
http://localhost:19001,使用配置的用户名admin和密码_admin123登录。
常见问题
- 无法访问控制台:请确保防火墙或网络配置允许端口
19001的访问,且本地 Docker 服务正常运行。 - 存储路径权限问题:请确保本地挂载的
./storage/data和./storage/config目录存在,并具有正确的读写权限。
总结
通过 Docker Compose,我们可以轻松地在开发环境中快速部署 MinIO 单节点对象存储系统。本文提供的配置不仅可以满足日常开发需求,还能方便地调试和测试对象存储功能。在生产环境中,建议使用多节点的 MinIO 部署,以确保数据的高可用性和持久性。