在平常的开发工作中,我们经常会遇到上传图片、上传文件等相关的需求。比如上传用户头像、上传商品图片、上传商品的附件等等。那么我们应该如何去实现文件的上传呢?可以购买对象存储服务,也可以用 minio 来实现相关上传功能。minio 是一款对象存储服务器,它具有轻量级、高性能等特点,可以用于文件上传、上传图片等。今天,我们总结下 docker 下安装 minio 的主要步骤。
1:概述
minio 是高性能的分布式对象存储系统,适合存储照片、日志文件、excel 文件、word 文档等。轻量级,安装简单,占用资源少,接入方便,支持多节点部署。minio 可以处理大量数据,具有高吞吐量和低延迟。支持跨多个节点的分布式存储,提供了数据冗余和高可用性。
2:拉取镜像
首先拉取 minio 镜像,如果最后面不带 tag 版本,则默认拉取最新版本的镜像,拉取 minio 镜像的命令为:docker pull minio/minio,此处注意:平常拉取其他镜像的命令,如 docker pull nginx,只需要写一遍镜像名称,而拉取 minio 镜像写法为 minio/minio,这是因为镜像的完整标识通常是 [镜像仓库地址]/[组织名或用户名]/[镜像名]:[标签],这是因为在 Docker Hub 的 library 命名空间下查找 minio 镜像,然后其镜像放在了 minio 命令空间下面,所以要用 docker pull minio/minio 拉取。下载某个版本,则在后面带上版本号。不写版本号,默认拉取的为最新版本的镜像,拉取完成后,如下:
3:创建映射目录
mkdir -p /docker/minio/data
mkdir -p /docker/minio/config
4:启动 minio
(1):编写 docker-compose.yml 文件
minio:
image: minio/minio:latest
container_name: minio
ports:
- "9000:9000" # api 服务端口
- "9001:9001" # 控制台端口
environment:
TZ: Asia/Shanghai
# 管理员用户名
MINIO_ROOT_USER: test
# 管理员密码
MINIO_ROOT_PASSWORD: 12345678
# 开启压缩 on 开启 off 关闭
MINIO_COMPRESS: "off"
# mime 类型 application/pdf 为空 所有类型均压缩
MINIO_COMPRESS_MIME_TYPES: ""
# 扩展名 .pdf,.doc 为空 所有类型均压缩
MINIO_COMPRESS_EXTENSIONS: ""
volumes:
# 数据目录映射
- /docker/minio/data:/data
# 配置目录映射
- /docker/minio/config:/root/.minio/
# 启动 MinIO 服务并指定控制台端口
command: server --address ':9000' --console-address ':9001' /data
privileged: true
network_mode: "host"
(2):docker compose up -d
使用 docker compose up -d 启动容器,启动完成后可以用 docker ps 查看 minio 容器是否启动成功。如果启动失败,可以用 docker logs 容器名称,查看错误日志。启动成功后,docker ps 查看,信息如下:
5:测试
在浏览器中输入 http://ip:9001,访问成功,登录页面如下:
登录成功页面如下:
可能遇到的问题,访问不同,那么可能是防火墙端口的问题,可能是 9001 端口防火墙未开导致的,不同的内核版本有不同的对应命令,如果是 Centos 内核版本,查看版本可以用 cat /etc/os-release 命令,可以先查看 9001 端口是否开了防火墙,如果没开,则添加后重启防火墙,相关命令如下:
1):查看防火墙开的端口:firewall-cmd --zone=public --list-ports
2):若端口未开,则添加,比如开放 9001 端口:firewall-cmd --zone=public --add-port=9001/tcp --permanent
3):修改完成后,重启防火墙:firewall-cmd --reload
六:总结
以上为 docker 下安装 minio 的基本步骤,主要是拉取镜像、创建挂载目录、编写启动容器的 docker-compose.yml 文件,通过 docker compose up -d 启动。启动完成后可以通过 docker ps 查看容器的启动状态,如果启动失败,可以通过 docker logs 容器名称查看失败日志,根据失败日志修改对应的问题。启动成功后,可以在浏览器中输入 ip 地址和端口进行访问,登录的用户名和密码在 docker-compose.yml 文件中对应的配置项。