使用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/ 上传的文件地址
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。