docker部署minio并使用springboot連接的操作方法
需求:工作中,在微信小程序播放時(shí),返回文件流并不能有效的使用,前端需要一個(gè)可以訪問(wèn)的地址,springboot默認(rèn)是有資源攔截器的,但是不適合生產(chǎn)環(huán)境的使用
可以提供使用的有例如fastdfs或者minio,這里以minio為例
環(huán)境
| 軟件 | 版本 |
| docker | 24.0.4 |
| minio | RELEASE.2023-10-24T05-18-28Z (commit-id=97cc12fdc539361cf175ffc2f00480eec0836d82) |
minio安裝
docker命令
docker run -d \ -p 9000:9000 \ -p 9001:9001 \ --name minio --restart=always --privileged=true \ -v /home/minio/data:/data \ -e "MINIO_ROOT_USER=user" \ -e "MINIO_ROOT_PASSWORD=password" \ minio/minio server /data --console-address ":9001"
開(kāi)啟linux防火墻
centos開(kāi)啟防火墻
開(kāi)啟端口
sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
重啟防火墻
sudo firewall-cmd --reload
打開(kāi)瀏覽器訪問(wèn) ip:9001

看到此頁(yè)面即為成功
springboot整合minio
pom.xml
<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.5.6</version>
<exclusions>
<exclusion>
<artifactId>okhttp</artifactId>
<groupId>com.squareup.okhttp3</groupId>
</exclusion>
</exclusions>
</dependency>配置類
@Configuration
public class MinioConfig {
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;
@Bean
public MinioClient minioClient(){
return
MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}文件上傳的工具類
@Slf4j
public class MinioUtils {
public static String uploadFile(MinioClient minioClient, InputStream inputStream, String bucket, String filename) {
try {
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("public").build());
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket("public").build());
}
ObjectWriteResponse response = minioClient.putObject(
PutObjectArgs
.builder()
.bucket(bucket)
.object(filename)
.stream(inputStream, inputStream.available(), -1)
.contentType(InferStatusConstant.WAV_CONTENT_TYPE)
.build()
);
String url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
.bucket(bucket)
.expiry(7 * 24 * 60 * 60)
.object(filename)
.method(Method.GET)
.build());
log.info("分享地址:" + url);
return url;
} catch (ErrorResponseException | InsufficientDataException | InternalException | InvalidKeyException |
InvalidResponseException | IOException | NoSuchAlgorithmException | ServerException |
XmlParserException e) {
throw new RuntimeException(e);
}
}
}測(cè)試類:
@Test
public void uploadFileToMinio() {
try (FileInputStream stream = new FileInputStream("/path/to/file")) {
String url = MinioUtils.uploadFile(minioClient, stream, "test", "/test/test1.wav");
System.out.println(url);
} catch (Exception e) {
}
}遇到的一些問(wèn)題 運(yùn)行springboot的測(cè)試類沒(méi)有上傳,debug之后顯示s3 api requests must be made to api port.
解決方案:
進(jìn)入docker
docker exec -it minio bash
進(jìn)入后,查看信息
mc config host ls
找到自己的服務(wù),我的為localhost,查看下方的url等信息均不對(duì),移除當(dāng)前服務(wù)
mc config host remove 服務(wù)名
添加新的服務(wù),注意url信息,注意端口
mc config host add 服務(wù)名 http://IP:9000 user password --api S3v4
不需要重啟,重新運(yùn)行測(cè)試代碼,發(fā)現(xiàn)運(yùn)行成功
在使用的過(guò)程中生成分享連接為127.0.0.1/XXXXXXX
解決方案同上,修改自己的ip
到此這篇關(guān)于docker部署minio并使用springboot連接的文章就介紹到這了,更多相關(guān)docker部署minio內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決使用Docker Compose管理容器的問(wèn)題
在Docker Compose中,根據(jù)一個(gè)配置文件,將所有與應(yīng)用系統(tǒng)相關(guān)的應(yīng)用和對(duì)應(yīng)的容器進(jìn)行配置,再根據(jù)Docker Compose提供的命令進(jìn)行啟動(dòng),就可以解決上面說(shuō)的多容器之間的復(fù)雜問(wèn)題,感興趣的朋友跟隨小編一起看看吧2021-09-09
Windows10系統(tǒng)下docker安裝指南以及踩坑解決
這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下docker安裝指南以及踩坑解決的相關(guān)資料,相信大家都知道Docker有很多種安裝的選擇,其中支持最好的是Ubuntu系統(tǒng),而且docker如果想在windows上運(yùn)行必須借助docker-machine,需要的朋友可以參考下2023-08-08
詳解基于docker 如何部署surging分布式微服務(wù)引擎
這篇文章主要介紹了詳解基于docker 如何部署surging分布式微服務(wù)引擎,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
通過(guò)docker容器搭建lamp架構(gòu)的流程
這篇文章主要介紹了dcoker容器搭建lamp架構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
Docker跨主機(jī)網(wǎng)絡(luò)(overlay)的實(shí)現(xiàn)
這篇文章主要介紹了Docker跨主機(jī)網(wǎng)絡(luò)(overlay)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Docker容器的網(wǎng)絡(luò)管理和網(wǎng)絡(luò)隔離的實(shí)現(xiàn)
這篇文章主要介紹了Docker容器的網(wǎng)絡(luò)管理和網(wǎng)絡(luò)隔離的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
基于docker搭建redis-sentinel集群的方法示例
這篇文章主要介紹了基于docker搭建redis-sentinel集群的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06

