使用Docker搭建minio

上官小弑 2024-09-30 08:37:01 阅读 75

一、docker配置镜像源问题

docker国内镜像可能会无法使用,建议多配置数据源使用"i",进入编辑。使用"ESC"->":wq"保存并退出

<code>vi /etc/docker/daemon.json

{

"registry-mirrors": ["https://4xxwxhl6.mirror.aliyuncs.com","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://docker.nju.edu.cn","https://6kx4zyno.mirror.aliyuncs.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://dockerproxy.com"]

}

二、docker拉取镜像

切换用户至root拉取镜像源

docker pull minio/minio

配置挂载目录和上传文件目录

mkdir -p /opt/minio/config

mkdir -p /opt/minio/data

创建容器并运行

docker run \

-p 9000:9000 \

-p 9001:9001 \

--net=host \

--name minio \

-d --restart=always \

-e "MINIO_ACCESS_KEY=minio" \

-e "MINIO_SECRET_KEY=minio123" \

-v /opt/minio/data:/data \

-v /opt/minio/config:/root/.minio \

minio/minio server \

/data --console-address ":9001" -address ":9000"

注意:

设置密码时,3-8个字符,但是我使用"123456",容器运行成功,但是无法访问,停止容器(docker stop minio)删除容器(docker rm minio),重新设置密码使用 虚拟机ip:9001访问springBoot集成的话,使用9000端口

查看minio

使用虚拟机ip:9001查看

1、新建Bucket

点击左侧Buckets为Bucket取一个合适的名字新建Bucket

在这里插入图片描述

2、 新建Access Key

点击左侧 Access Keys,记下Access Key 和 Secter Key设置name点击create新建Browser

在这里插入图片描述

需要 Access Key 和 Secter Key 来访问Bucket

虚拟机下载安装Cpolar

使用脚本一键安装

<code>curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

在这里插入图片描述

在这里插入图片描述

安装成功,提示使用<code>systemctl enable cpolar 命令和 systemctl start cpolar命令使用systemctl enable cpolar 命令 启用cpolar

在这里插入图片描述

使用 <code>systemctl start cpolar命令 启动cpolar

在这里插入图片描述

在浏览器使用 虚拟机ip:9200 访问cpolar

在这里插入图片描述

注册用户

在这里插入图片描述

返回登录

在这里插入图片描述

点击左侧隧道管理,创建新隧道

在这里插入图片描述

点击在线隧道列表,查看新建隧道

在这里插入图片描述

由于后续安装的elasticsearch端口也为9200,故在此处贴上修改cpolar端口

查看9200端口信息

在这里插入图片描述

停止正在运行的cpolar <code>systemctl stop cpolar

在这里插入图片描述

使用 <code>find / -name cpolar.yml 2>/dev/null 查看yml文件

在这里插入图片描述

查看官网教程

在这里插入图片描述

执行<code>vi /usr/local/etc/cpolar/cpolar.yml

在这里插入图片描述

添加配置<code>client_dashboard_addr: 127.0.0.1:9300,注意,官网修改只能虚拟机内部访问,外部无法访问

在这里插入图片描述

如果需要外部访问的话,此处需要改为 虚拟机ip:端口号

在这里插入图片描述

启动服务<code>sudo systemctl start cpolar

未停止服务的话,使用重启服务sudo systemctl restart cpolar

测试是否修改成功

在这里插入图片描述

如果在线隧道列表无隧道,前往隧道管理启动相应隧道

SpringBoot集成使用

在pom中引入jar包

<code>#低版本的okhttp会报错提示

<dependency>

<groupId>io.minio</groupId>

<artifactId>minio</artifactId>

<version>8.5.7</version>

</dependency>

<dependency>

<groupId>com.squareup.okhttp3</groupId>

<artifactId>okhttp</artifactId>

<version>4.10.0</version>

</dependency>

上传代码测试

@Test

void uploadtest(){

try{

String endPoint = "8.tcp.cpolar.top";

int port = 13981;

String accessKey = "YsBvivSZUGsRLfqL2JXL";

String secretKey = "yuLLwPoxFjUUvn45bQ3rwmH49Pf8wGFGkZTpNGXa";

MinioClient minioClient = MinioClient.builder()

.endpoint(endPoint,port,false)

.credentials(accessKey,secretKey)

.build();

// 定义桶名和对象名称

String bucketName = "gulimall";

String objectName = "test.jpg";

String filePath = "E:\\uploadFile\\gulimall/p23.png"; // 本地文件路径

minioClient.uploadObject(

UploadObjectArgs.builder()

.bucket(bucketName)

.object(objectName)

.filename(filePath)

.build());

System.out.println("上传测试成功........");

}catch (Exception e){

System.out.println("Error" + e);

}

}

提交报错(提示 请求时间和服务器时间之间的差异太大)

Errorerror occurred

ErrorResponse(code = RequestTimeTooSkewed, message = The difference between the request time and the server's time is too large., bucketName = null, objectName = null, resource = /gulimall, requestId = 17EC67767F4197ED, hostId = dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8)

在虚拟机使用chronyd同步时间使用 yum install chronyd安装启用chronyd 服务 systemctl enable chronyd启动 chronyd 服务 systemctl start chronyd同步时间 chronyc makestep使用 date 检查 (我再次检查,发现时间依旧不对,最后检查发现,时区未设置为上海)设置时区为上海 timedatectl set-timezone Asia/Shanghai再次使用 date 检查,时间调整成功

在这里插入图片描述

再次测试提交,测试成功

在这里插入图片描述

下载代码测试

<code>@Test

void downLoad(){

try {

String endPoint = "8.tcp.cpolar.top";

int port = 13981;

String accessKey = "YsBvivSZUGsRLfqL2JXL";

String secretKey = "yuLLwPoxFjUUvn45bQ3rwmH49Pf8wGFGkZTpNGXa";

// 创建 MinIO 客户端

MinioClient minioClient = MinioClient.builder()

.endpoint(endPoint,port,false)

.credentials(accessKey, secretKey)

.build();

String bucketName = "gulimall";

String objectName = "test.jap";

String filePath = "E:\\downloadFile\\gulimall/p23.png"; // 本地文件路径

// 下载文件

minioClient.downloadObject(

DownloadObjectArgs.builder()

.bucket(bucketName)

.object(objectName)

.filename(filePath)

.build()

);

System.out.println("文件下载成功: " + filePath);

} catch (Exception e) {

System.out.println("Error occurred: " + e);

}

}

在这里插入图片描述

通过地址访问上传内容

点击自己的bucket设置自己的bucket为公开

在这里插入图片描述

点击Access Policy后面的小铅笔或者下面的public

在这里插入图片描述

从private改为publlic

在这里插入图片描述

查看上传的文件地址

在这里插入图片描述

浏览器输入 虚拟机ip:9000/ 上传的文件地址

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。