老蒋的知识库

  • 首页
  • 文章归档
  • 关于页面

  • 搜索

Minio 文件系统部署与使用

发表于 2023-11-08 | 分类于 Minio | 0 | 阅读次数 72

参考资料

Docker部署: https://hub.docker.com/r/minio/minio
Java官方教程: https://min.io/docs/minio/linux/developers/java/minio-java.html
其他语言访问教程: https://min.io/docs/minio/linux/developers/minio-drivers.html?ref=docs
Minio Nginx转发配置:https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html
Minio 可视化控制台配置:https://min.io/docs/minio/linux/administration/minio-console.html

遇到的坑

Minio的API接口,不能使用Nginx二级目录转发(只能配置转发控制台的9001端口)

这里使用Java代码访问,如图直接报错地址格式错误。
image

docker部署

命令行部署

docker run -p 9000:9000 -p 9001:9001 --name minio \
  -d --restart=always \
  -e "MINIO_ACCESS_KEY=admin" \
  -e "MINIO_SECRET_KEY=admin" \
      # 如果要配置Nginx二级域名转发,必须要写清楚Minio控制台域名路径。
  -e "MINIO_BROWSER_REDIRECT_URL=https://domain.com/minio/" \
  -v /data/minio/data:/data \
  -v /data/minio/config:/root/.minio \
  minio/minio:RELEASE.2023-11-01T18-37-25Z.fips \
  server /data --console-address ":9090"

docker-compose.yml文件部署

docker-compose -f .\docker-compose.yml up -d

version : '3.8'
services:
  minio:
    container_name: minio
    image: minio/minio:RELEASE.2023-11-01T18-37-25Z.fips
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      - MINIO_ACCESS_KEY=admin
      - MINIO_SECRET_KEY=admin
      # 如果要配置Nginx二级域名转发,必须要写清楚Minio控制台域名路径。
      - MINIO_BROWSER_REDIRECT_URL=https://domain.com/minio/
    volumes:
      - ./minio/data:/data
      - ./minio/config:/root/.minio
    command: server /data --console-address ":9001"

9000和9001端口作用

9000: 提供API访问
9001: 提供可视化页面使用

Minio控制台,可视化界面访问

  1. 访问http://IP:9001。
  2. 创建Access Key提供API进行访问。
    1699381738201

配置Nginx转发可视化界面

	# 需要转发的二级目录
   location /minio/ {
      rewrite ^/minio/(.*) /$1 break;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-NginX-Proxy true;

      # This is necessary to pass the correct IP to be hashed
      real_ip_header X-Real-IP;

      proxy_connect_timeout 300;

      # To support websockets in MinIO versions released after January 2023
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      # Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
      # Uncomment the following line to set the Origin request to an empty string
      # proxy_set_header Origin '';

      chunked_transfer_encoding off;
	 # 对应的docker容器名称与域名
      proxy_pass http://minio:9001;
   }

代码访问

Java代码访问


import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.*;
import org.testng.annotations.Test;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class MinioTest {
    @Test()
    public void test2() throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        // 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
        MinioClient minioClient = MinioClient.builder()
                .endpoint("http://ip:9000")
                // 这里写之前可视化页面创建的 Access Key
                .credentials("wrYc3jGugGwhJn8sOkdK",
                        "8mByhjkpOmP1LC0NLyN8Yccvohwdd7E9kb4gGeDs")
                .build();

        // 如果桶不存在就新建
        boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("asiatrip").build());
        if (!found) {
            minioClient.makeBucket(MakeBucketArgs.builder().bucket("asiatrip").build());
        } else {
            System.out.println("'asiatrip桶已存在");
        }

        // 上传文件
        minioClient.uploadObject(
                UploadObjectArgs.builder()
                        .bucket("asiatrip")
                        .object("test.zip")
                        .filename("D:\\下载\\test.zip")
                        .build());
        System.out.println("上传成功");
    }
}

  • 本文作者: jagger
  • 本文链接: /archives/minio-wen-jian-xi-tong-bu-shu-yu-shi-yong
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
Java Spring 定时任务
Redis 避坑指南
jagger

jagger

66 日志
31 分类
0 标签
Creative Commons
0%
© 2026 jagger
由 Halo 强力驱动