一、docker配置镜像源问题
- docker国内镜像可能会无法使用,建议多配置数据源
- 使用"i",进入编辑。使用"ESC"->":wq"保存并退出
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
- 使用脚本一键安装
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 安装成功,提示使用
systemctl enable cpolar
命令和systemctl start cpolar
命令 - 使用
systemctl enable cpolar
命令 启用cpolar
- 使用
systemctl start cpolar
命令 启动cpolar
- 在浏览器使用 虚拟机ip:9200 访问cpolar
- 注册用户
- 返回登录
- 点击左侧隧道管理,创建新隧道
- 点击在线隧道列表,查看新建隧道
-
由于后续安装的elasticsearch端口也为9200,故在此处贴上修改cpolar端口
-
查看9200端口信息
-
停止正在运行的cpolar
systemctl stop cpolar
-
使用
find / -name cpolar.yml 2>/dev/null
查看yml文件
-
查看官网教程
-
执行
vi /usr/local/etc/cpolar/cpolar.yml
-
添加配置
client_dashboard_addr: 127.0.0.1:9300
,注意,官网修改只能虚拟机内部访问,外部无法访问
-
如果需要外部访问的话,此处需要改为 虚拟机ip:端口号
-
启动服务
sudo systemctl start cpolar
-
未停止服务的话,使用重启服务
sudo systemctl restart cpolar
-
测试是否修改成功
-
如果在线隧道列表无隧道,前往隧道管理启动相应隧道
-
SpringBoot集成使用
- 在pom中引入jar包
#低版本的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
检查,时间调整成功
- 再次测试提交,测试成功
- 下载代码测试
@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/ 上传的文件地址