存储引用服务(OSS)Minio 环境搭建

  1. 下载Docker desktop

  2. 最好进行相关的设置,比如说进行登陆docker账号等等

    推荐使用 docker-engine源【目前还能使用下载】

    https://ccr.ccs.tencentyun.com

  3. 使用docker拉取对应的minio镜像

    netstat -aon|findstr "8081"

       注意:dockerhub有时访问比较奇怪,有时可以拉取,有时候则不行。 所以可能需要VPN

  4. https://ikuuu.pw/auth/login, 这个是加速器,必要的时候可能会需要使用到。

    因为我已经在早些的时候就已经拉取过一次了,所以有如下的显示。

  1. 进行容器的搭建

      3.1 单容器进行部署

      在命令行中(cmd),我们对我们的即将成为容器的镜像进行如下的配置

    docker run -d -p 9000:9000 -p 9090:9090 --name minio 
    -e "MINIO_ACCESS_KEY=lucas"
     -e "MINIO_SECRET_KEY=12345678" 
    -v E:\minioMount\data:/data 
    -v E:\minioMount\config:/root/.minio 
    -d minio/minio server /data 
    --console-address ":9090" -address ":9000"

       发现问题:

    1. console-addressip地址要设置为9090,这个是服务器的控制台地址,而我们的address(我看做为发送请求的地址,所以我们需要用这个端口号来发送请求)

    2. 还有就是要注意格式,在启动容器之前不然就会看到很常见的 docker: invalid reference format. 要保证到都有空格区分

  2. 命名

    描述

    -d

    表示这个容器将会在后台进行运行

    p 9000:9000 -p 9090:9090

    这是端口映射,前一个是服务器的端口,后一个是客户端也就是api接口访问的端口地址

    –name minio

    这是给新创建的容器命名的选项,名字是 “minio”

    -e “MINIO_ACCESS_KEY=lucas

    用户名

    -e “MINIO_SECRET_KEY=12345678”

    密码

    -v E:\minioMount\data:/data

    这意味着将宿主机上的 对应 目录挂载到容器内的 /data 目录,高亮处不要留有空格

    -v E:\minioMount\config:/root/.minio

    这意味着将宿主机上的 对应 目录挂载到容器内的 /root/.minio 目录,高亮处不要留有空格

    -d minio/minio server /data

    这是容器内要运行的命令,启动一个名为 “minio” 的服务器,数据存储在 /data 目录下

    --console-address ":9090" -address ":9000"

    服务器的控制台地址为 “:9090”,服务地址为 “:9000”

    3.2 多容器同时进行部署

    先查看docker compose的版本

编辑对应的yaml部署信息文件,实际实践当中发现:关于版本的选择,好像没有特别的要求说明

version: 3.1.1
services:
  minio6:
    image: minio/minio
    volumes:
      - E:\minioMount\data:/data
      - E:\minioMount\config:/root/.minio
    ports:
      - "9006:9006"
      - "9096:9096"
    environment:
      - MINIO_ACCESS_KEY=lucas
      - MINIO_SECRET_KEY=12345678
    command: server /data -address ":9006" --console-address ":9096"

  minio7:
    image: minio/minio
    volumes:
      - E:\minioMount\data:/data
      - E:\minioMount\config:/root/.minio
    ports:
      - "9007:9007"
      - "9097:9097"
    environment:
      - MINIO_ACCESS_KEY=lucas
      - MINIO_SECRET_KEY=12345678
    command: server /data -address ":9007" --console-address ":9097"

  minio8:
    image: minio/minio
    volumes:
      - E:\minioMount\data:/data
      - E:\minioMount\config:/root/.minio
    ports:
      - "9008:9008"
      - "9098:9098"
    environment:
      - MINIO_ACCESS_KEY=lucas
      - MINIO_SECRET_KEY=12345678
    command: server /data -address ":9008" --console-address ":9098"

  minio9:
    image: minio/minio
    volumes:
      - E:\minioMount\data:/data
      - E:\minioMount\config:/root/.minio
    ports:
      - "9009:9009"
      - "9099:9099"
    environment:
      - MINIO_ACCESS_KEY=lucas
      - MINIO_SECRET_KEY=12345678
    command: server /data -address ":9009" --console-address ":9099"
  1. 在cmd黑窗口中输入如下的命令,-p:表示为这个容器集合取一个名字 up:表示创建多个容器
  2. docker-compose -p xf_dockers up -d

    执行过程

  3. 🆗,当我们再次回到docker desktop 的时候就会发现,集群已经成功的启动了,而上面的2-5的容器,是我单独使用docker run【见上面配置】的命令依次配置

  4. 登录测试:

  5. 再次邂逅 docker desktop

  6. 在镜像中已经显现到我们的minio镜像被使用了

    而对应的容器也在对应的端口进行了启动。

    我们可以在logs,日志中,找到客服端访问的路径,并成功的登陆和启动,ps:如果你有在局域网的设备的话,也可以进行访问(一般来说是莫得问题的,不管是使用宿主机还是虚拟机推荐先把防火墙进行关闭,不然会出现各种问题,如请求超时或者拒绝访问等的问题)

  7. 至此,minion服务启动成功!

  8. 百废待兴--开创家业

      5.1 创建用户
  9. 如下页面所示,选择需要的策略【这里默认全选上】,注意这里的用户名不能和上面设置的登陆到客户端的用户名一致!!!

    成功创建后如下显示!

    5.2 创建组群

    下面我们演示,如何进行组群的创建

    下图中,我们可以根据自己的需要,为组群设置一个名字,此外我们还可以设置组群的管理用户。

    创建成功后,我们还可以通过画笔小图标进行修改【添加后续新进入的成员】

  10. 设置秘钥

  11. 直接点击下载

    5.4 创建bucket

    我们需要注意,在为自己的bucket进行命名的时候,要注意满足以下要求的格式

    bucket创建成功!!!

  12. 最佳实践

  13. 6.1 UI方式上传文件

    操作如下:都是点点点,没有什么好说的

    上传成功后,效果展示如下

  14. 编码方式上传文件

  15. 导入相关依赖

            #低版本的okhttp会报错提示
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>4.9.0</version>
            </dependency>
            
            <dependency>
                <groupId>io.minio</groupId>
                <artifactId>minio</artifactId>
                <version>8.4.2</version>
                <exclusions>
                    <exclusion>
                        <artifactId>okhttp</artifactId>
                        <groupId>com.squareup.okhttp3</groupId>
                    </exclusion>
                </exclusions>
            </dependency>

    测试用例 注意修改对应的文件和相关的地址【代码仅供参考,不宜直接CV】

  16. import io.minio.BucketExistsArgs;
    import io.minio.MakeBucketArgs;
    import io.minio.MinioClient;
    import io.minio.UploadObjectArgs;
    import io.minio.errors.MinioException;
     
    import java.io.IOException;
    import java.security.InvalidKeyException;
    import java.security.NoSuchAlgorithmException;
     
    public class FileUploader {
     
        public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
            try {
                // Create a minioClient with the MinIO server playground, its access key and secret key.
                MinioClient minioClient =
                        MinioClient.builder()
                                .endpoint("http://192.168.1.110:9000")
                                .credentials("XO1JDovW2FTmGaBb", "uG6wMfylUnOVH5WzwxqnldOWw2dMshNX")
                                .build();
     
                // Make 'asiatrip' bucket if not exist.
                boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("public").build());
                if (!found) {
                    // Make a new bucket called 'asiatrip'.
                    minioClient.makeBucket(MakeBucketArgs.builder().bucket("public").build());
                } else {
                    System.out.println("Bucket 'public' already exists.");
                }
     
                // Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
                // 'asiatrip'.
                minioClient.uploadObject(
                        UploadObjectArgs.builder()
                                .bucket("public")
                                .object("credentials.json")
                                .filename("C:/Users/lai.huanxiong/Downloads/credentials.json")
                                .build());
                System.out.println("'C:/Users/lai.huanxiong/Downloads/credentials.json' is successfully uploaded as " + "object 'credentials.json' to bucket 'public'.");
            } catch (MinioException e) {
                System.out.println("Error occurred: " + e);
                System.out.println("HTTP trace: " + e.httpTrace());
            }
        }
    }
    

    文件上传成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lucas-Lu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值