衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用docker搭建minio服務(wù)

倩倩 ? 來(lái)源:CSDN ? 作者:CSDN ? 2022-09-23 11:08 ? 次閱讀


什么是minio

引用官網(wǎng):

MinIO是根據(jù)GNU Affero通用公共許可證v3.0發(fā)布的高性能對(duì)象存儲(chǔ)。它與Amazon S3云存儲(chǔ)服務(wù)兼容。使用MinIO構(gòu)建用于機(jī)器學(xué)習(xí),分析和應(yīng)用程序數(shù)據(jù)工作負(fù)載的高性能基礎(chǔ)架構(gòu)。

官網(wǎng)地址:

https://min.io/

文檔地址:

https://docs.min.io/

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

一. 使用docker 搭建minio 服務(wù)。

GNU / Linux和macOS

dockerrun-p9000:9000
--nameminio1
-v/mnt/data:/data
-e"MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE"
-e"MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
minio/minioserver/data

windows

dockerrun-p9000:9000
--nameminio1
-vD:data:/data
-e"MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE"
-e"MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
minio/minioserver/data
  • MINIO_ROOT_USER:為用戶key
  • MINIO_ROOT_PASSWORD:為用戶密鑰

以上搭建的都是單機(jī)版的。想要了解分布式 的方式請(qǐng)查看官網(wǎng)文檔。

a62be472-3ae9-11ed-9e49-dac502259ad0.png

這就是在win的docker上運(yùn)行的。

當(dāng)啟動(dòng)后在瀏覽器訪問(wèn)http://localhost:9000就可以訪問(wèn)minio的圖形化界面了,如圖所示:

a65eb08c-3ae9-11ed-9e49-dac502259ad0.pnga6875ba4-3ae9-11ed-9e49-dac502259ad0.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://gitee.com/zhijiantianya/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

二. 下面開(kāi)始搭建springboot 環(huán)境

初始化一個(gè)springboot項(xiàng)目大家都會(huì),這里不多做介紹。

主要是介紹需要引入的依賴:


<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>

<dependency>
<groupId>io.miniogroupId>
<artifactId>minioartifactId>
<version>8.2.1version>
dependency>

<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>

依賴可以官方文檔里找:https://docs.min.io/docs/java-client-quickstart-guide.html

下面介紹配置文件:

spring:
servlet:
multipart:
max-file-size:10MB
max-request-size:10MB
#minio配置
minio:
access-key:AKIAIOSFODNN7EXAMPLE#key就是docker初始化是設(shè)置的,密鑰相同
secret-key:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
url:http://localhost:9000
bucket-name:wdhcr
thymeleaf:
cache:false

創(chuàng)建minio的配置類:

@Configuration
@ConfigurationProperties(prefix="spring.minio")
@Data
publicclassMinioConfiguration{
privateStringaccessKey;

privateStringsecretKey;

privateStringurl;

privateStringbucketName;

@Bean
publicMinioClientminioClient(){
returnMinioClient.builder()
.endpoint(url)
.credentials(accessKey,secretKey)
.build();
}
}

使用配置屬性綁定進(jìn)行參數(shù)綁定,并初始化一個(gè)minio client對(duì)象放入容器中。

下面就是我封裝的minio client 操作minio的簡(jiǎn)單方法的組件。

@Component
publicclassMinioComp{

@Autowired
privateMinioClientminioClient;

@Autowired
privateMinioConfigurationconfiguration;

/**
*@description:獲取上傳臨時(shí)簽名
*@dateTime:2021/5/1314:12
*/
publicMapgetPolicy(StringfileName,ZonedDateTimetime){
PostPolicypostPolicy=newPostPolicy(configuration.getBucketName(),time);
postPolicy.addEqualsCondition("key",fileName);
try{
Mapmap=minioClient.getPresignedPostFormData(postPolicy);
HashMapmap1=newHashMap<>();
map.forEach((k,v)->{
map1.put(k.replaceAll("-",""),v);
});
map1.put("host",configuration.getUrl()+"/"+configuration.getBucketName());
returnmap1;
}catch(ErrorResponseExceptione){
e.printStackTrace();
}catch(InsufficientDataExceptione){
e.printStackTrace();
}catch(InternalExceptione){
e.printStackTrace();
}catch(InvalidKeyExceptione){
e.printStackTrace();
}catch(InvalidResponseExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(ServerExceptione){
e.printStackTrace();
}catch(XmlParserExceptione){
e.printStackTrace();
}
returnnull;
}

/**
*@description:獲取上傳文件的url
*@dateTime:2021/5/1314:15
*/
publicStringgetPolicyUrl(StringobjectName,Methodmethod,inttime,TimeUnittimeUnit){
try{
returnminioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
.method(method)
.bucket(configuration.getBucketName())
.object(objectName)
.expiry(time,timeUnit).build());
}catch(ErrorResponseExceptione){
e.printStackTrace();
}catch(InsufficientDataExceptione){
e.printStackTrace();
}catch(InternalExceptione){
e.printStackTrace();
}catch(InvalidKeyExceptione){
e.printStackTrace();
}catch(InvalidResponseExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(XmlParserExceptione){
e.printStackTrace();
}catch(ServerExceptione){
e.printStackTrace();
}
returnnull;
}


/**
*@description:上傳文件
*@dateTime:2021/5/1314:17
*/
publicvoidupload(MultipartFilefile,StringfileName){
//使用putObject上傳一個(gè)文件到存儲(chǔ)桶中。
try{
InputStreaminputStream=file.getInputStream();
minioClient.putObject(PutObjectArgs.builder()
.bucket(configuration.getBucketName())
.object(fileName)
.stream(inputStream,file.getSize(),-1)
.contentType(file.getContentType())
.build());
}catch(ErrorResponseExceptione){
e.printStackTrace();
}catch(InsufficientDataExceptione){
e.printStackTrace();
}catch(InternalExceptione){
e.printStackTrace();
}catch(InvalidKeyExceptione){
e.printStackTrace();
}catch(InvalidResponseExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(ServerExceptione){
e.printStackTrace();
}catch(XmlParserExceptione){
e.printStackTrace();
}
}
/**
*@description:根據(jù)filename獲取文件訪問(wèn)地址
*@dateTime:2021/5/1711:28
*/
publicStringgetUrl(StringobjectName,inttime,TimeUnittimeUnit){
Stringurl=null;
try{
url=minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
.method(Method.GET)
.bucket(configuration.getBucketName())
.object(objectName)
.expiry(time,timeUnit).build());
}catch(ErrorResponseExceptione){
e.printStackTrace();
}catch(InsufficientDataExceptione){
e.printStackTrace();
}catch(InternalExceptione){
e.printStackTrace();
}catch(InvalidKeyExceptione){
e.printStackTrace();
}catch(InvalidResponseExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}catch(XmlParserExceptione){
e.printStackTrace();
}catch(ServerExceptione){
e.printStackTrace();
}
returnurl;
}
}

簡(jiǎn)單說(shuō)明:

  • 使用MultipartFile接收前端文件流,再上傳到minio。
  • 構(gòu)建一個(gè)formData的簽名數(shù)據(jù),給前端,讓前端之前上傳到minio。
  • 構(gòu)建一個(gè)可以上傳的臨時(shí)URL給前端,前端通過(guò)攜帶文件請(qǐng)求該URL進(jìn)行上傳。
  • 使用filename請(qǐng)求服務(wù)端獲取臨時(shí)訪問(wèn)文件的URL。(最長(zhǎng)時(shí)間為7 天,想要永久性訪問(wèn),需要其他設(shè)置,這里不做說(shuō)明。)

下面展示頁(yè)面html,使用的是VUE+element-ui進(jìn)行渲染。

html>
<html>
<head>
<metacharset="UTF-8">

<linkrel="stylesheet"href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<title>上傳圖片title>
head>
<body>
<divid="app">

<el-row:gutter="2">
<el-col:span="8">
<divclass="div-center-class">
<divclass="">
<center><h3>傳統(tǒng)上傳h3>center>
<el-upload
class="upload-demo"
action="#"
drag
:http-request="uploadHandle">
<iclass="el-icon-upload">i>
<divclass="el-upload__text">將文件拖到此處,或<em>點(diǎn)擊上傳em>div>
<divclass="el-upload__tip"slot="tip">只能上傳jpg/png文件,且不超過(guò)500kbdiv>
el-upload>
<divv-if="imgUrl">
<img:src="imgUrl"style="width:40px;height:40px">img>
div>
div>
div>
el-col>
<el-col:span="8">
<divclass="div-center-class">
<divclass="">
<center><h3>前端formData直傳h3>center>
<el-upload
class="upload-demo"
action="#"
drag
:http-request="httpRequestHandle">
<iclass="el-icon-upload">i>
<divclass="el-upload__text">將文件拖到此處,或<em>點(diǎn)擊上傳em>div>
<divclass="el-upload__tip"slot="tip">只能上傳jpg/png文件,且不超過(guò)500kbdiv>
el-upload>
<divv-if="directUrl">
<img:src="directUrl"style="width:40px;height:40px">img>
div>
div>
div>
el-col>
<el-col:span="8">
<divclass="div-center-class">
<divclass="">
<center><h3>前端Url直傳h3>center>
<el-upload
class="upload-demo"
action="#"
drag
:http-request="UrlUploadHandle">
<iclass="el-icon-upload">i>
<divclass="el-upload__text">將文件拖到此處,或<em>點(diǎn)擊上傳em>div>
<divclass="el-upload__tip"slot="tip">只能上傳jpg/png文件,且不超過(guò)500kbdiv>
el-upload>
<divv-if="uploadUrl">
<img:src="uploadUrl"style="width:40px;height:40px">img>
div>
div>
div>
el-col>
el-row>
div>
body>

<scriptsrc="https://unpkg.com/vue/dist/vue.js">script>

<scriptsrc="https://unpkg.com/element-ui/lib/index.js">script>

<scriptsrc="https://unpkg.com/axios/dist/axios.min.js">script>
<script>
newVue({
el:'#app',
data:function(){
return{
imgUrl:'',
directUrl:'',
uploadUrl:''
}
},
methods:{

uploadHandle(options){
let{file}=options;
this.traditionPost(file);
},
traditionPost(file){
_that=this
constform=newFormData();
form.append("fileName",file.name);
form.append("file",file);
this.axiosPost("post","/upload",form).then(function(res){
if(res.status===200){
_that.imgUrl=res.data.data
}else{
alert("上傳失敗!")
}
})
},
getpolicy(file){
_that=this
axios.get('policy?fileName='+file.name)
.then(function(response){
let{xamzalgorithm,xamzcredential,policy,xamzsignature,xamzdate,host}=response.data.data;
letformData=newFormData();
formData.append("key",file.name);
formData.append("x-amz-algorithm",xamzalgorithm);//讓服務(wù)端返回200,不設(shè)置則默認(rèn)返回204。
formData.append("x-amz-credential",xamzcredential);
formData.append("policy",policy);
formData.append("x-amz-signature",xamzsignature);
formData.append("x-amz-date",xamzdate);
formData.append("file",file);
//發(fā)送POST請(qǐng)求
_that.axiosPost("post",host,formData).then(function(res){
if(res.status===204){
axios.get('url?fileName='+file.name).then(function(res){
_that.directUrl=res.data.data;
})
}else{
alert("上傳失敗!")
}
})
})
},
httpRequestHandle(options){
let{file}=options;
this.getpolicy(file);
},

UrlUploadHandle(options){
let{file}=options;
this.getUploadUrl(file);
},
getUploadUrl(file){
_that=this
console.log(file)
axios.get('uploadUrl?fileName='+file.name)
.then(function(response){
leturl=response.data.data;
//發(fā)送put請(qǐng)求
letconfig={'Content-Type':file.type}
_that.axiosPost("put",url,file,config).then(function(res){
if(res.status===200){
axios.get('url?fileName='+file.name).then(function(res){
_that.uploadUrl=res.data.data;
})
}else{
alert("上傳失敗!")
}
})
})
},
//封裝
//axios封裝post請(qǐng)求
axiosPost(method,url,data,config){
letresult=axios({
method:method,
url:url,
data:data,
headers:config
}).then(resp=>{
returnresp
}).catch(error=>{
return"exception="+error;
});
returnresult;
}

}
})
script>
<style>
.div-center-class{
padding:28%0%;
text-align:center;
background:beige;
}
style>
html>

a6a6bd8c-3ae9-11ed-9e49-dac502259ad0.png頁(yè)面效果

可以分別體驗(yàn)不同的實(shí)現(xiàn)效果。

以上就是使用springboot搭建基于minio的高性能存儲(chǔ)服務(wù)的全部步驟了。

項(xiàng)目地址是:

https://gitee.com/jack_whh/minio-upload



審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 云存儲(chǔ)
    +關(guān)注

    關(guān)注

    7

    文章

    773

    瀏覽量

    46153
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8438

    瀏覽量

    133080
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    492

    瀏覽量

    11962

原文標(biāo)題:Spring Boot + minio 實(shí)現(xiàn)高性能存儲(chǔ)服務(wù),So Easy~!

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建搭建 Flink

    夠同時(shí)處理實(shí)時(shí)數(shù)據(jù)流和靜態(tài)數(shù)據(jù)集,使得數(shù)據(jù)處理更加靈活高效 華為云端口放行 ??服務(wù)器放行對(duì)應(yīng)端口 8082 Docker 安裝并配置鏡像加速 1、購(gòu)買華為云 Flexus X 實(shí)例 Flexus云
    的頭像 發(fā)表于 01-13 18:17 ?162次閱讀
    云<b class='flag-5'>服務(wù)</b>器 Flexus X 實(shí)例,<b class='flag-5'>Docker</b> 集成<b class='flag-5'>搭建</b><b class='flag-5'>搭建</b> Flink

    服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 DVWA 靶場(chǎng)

    )、文件上傳漏洞、命令注入等,旨在提供一個(gè)安全可控的環(huán)境,讓用戶能夠?qū)W習(xí)和實(shí)踐如何識(shí)別、利用和防御這些漏洞 華為云端口放行 ??服務(wù)器放行對(duì)應(yīng)端口 8089 Docker 安裝并配置鏡像加速 1、購(gòu)買
    的頭像 發(fā)表于 01-13 18:17 ?168次閱讀
    云<b class='flag-5'>服務(wù)</b>器 Flexus X 實(shí)例,<b class='flag-5'>Docker</b> 集成<b class='flag-5'>搭建</b> DVWA 靶場(chǎng)

    服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 YesPlayMusic 網(wǎng)易云音樂(lè)播放器

    YesPlayMusic 是一款基于 Electron 的開(kāi)源網(wǎng)易云音樂(lè)桌面播放器,以簡(jiǎn)潔的界面和豐富的功能受到了許多用戶的喜愛(ài),特別是對(duì)于希望在桌面上享受網(wǎng)易云音樂(lè)服務(wù)的用戶 Docker 安裝并
    的頭像 發(fā)表于 01-13 18:17 ?187次閱讀
    云<b class='flag-5'>服務(wù)</b>器 Flexus X 實(shí)例,<b class='flag-5'>Docker</b> 集成<b class='flag-5'>搭建</b> YesPlayMusic 網(wǎng)易云音樂(lè)播放器

    服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 MinIO

    架構(gòu)來(lái)存儲(chǔ)和管理大規(guī)模的非結(jié)構(gòu)化數(shù)據(jù),如圖片、視頻、日志文件等,提供高可用性、可擴(kuò)展性和數(shù)據(jù)持久性 華為云端口放行 ??服務(wù)器放行對(duì)應(yīng)端口 9000,9001 Docker 安裝并配置鏡像加速 1
    的頭像 發(fā)表于 01-13 18:16 ?141次閱讀
    云<b class='flag-5'>服務(wù)</b>器 Flexus X 實(shí)例,<b class='flag-5'>Docker</b> 集成<b class='flag-5'>搭建</b> <b class='flag-5'>MinIO</b>

    服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 Grafana 開(kāi)源數(shù)據(jù)可視化平臺(tái)

    的用戶界面,用戶可以輕松創(chuàng)建和自定義動(dòng)態(tài)儀表板,以實(shí)時(shí)展示關(guān)鍵指標(biāo)和數(shù)據(jù)趨勢(shì) 華為云端口放行 ??服務(wù)器放行對(duì)應(yīng)端口 9955 Docker 安裝并配置鏡像加速 1、購(gòu)買華為云 Flexus X 實(shí)例
    的頭像 發(fā)表于 01-13 15:50 ?123次閱讀
    云<b class='flag-5'>服務(wù)</b>器 Flexus X 實(shí)例,<b class='flag-5'>Docker</b> 集成<b class='flag-5'>搭建</b> Grafana 開(kāi)源數(shù)據(jù)可視化平臺(tái)

    服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 Redis 集群

    器之間平衡負(fù)載,確保系統(tǒng)的高可用性和數(shù)據(jù)一致性 搭建 Redis 集群 1、購(gòu)買華為云 Flexus X 實(shí)例 Flexus云服務(wù)器X實(shí)例-華為云 (huaweicloud.com) ? 2、安裝
    的頭像 發(fā)表于 01-13 13:37 ?116次閱讀
    云<b class='flag-5'>服務(wù)</b>器 Flexus X 實(shí)例,<b class='flag-5'>Docker</b> 集成<b class='flag-5'>搭建</b> Redis 集群

    服務(wù)器 Flexus X 實(shí)例,Docker 集成搭建 NGINX

    Docker 集成搭建 NGINX 1、購(gòu)買華為云 Flexus X 實(shí)例 Flexus云服務(wù)器X實(shí)例-華為云 (huaweicloud.com) ? 2、docker 安裝 yum?
    的頭像 發(fā)表于 01-13 11:09 ?280次閱讀
    云<b class='flag-5'>服務(wù)</b>器 Flexus X 實(shí)例,<b class='flag-5'>Docker</b> 集成<b class='flag-5'>搭建</b> NGINX

    Flexus 云服務(wù)器 X 實(shí)例:在 Docker 環(huán)境下搭建 java 開(kāi)發(fā)環(huán)境

    和開(kāi)發(fā)者精心打造。它以卓越的柔性算力,為我們?cè)?Docker 環(huán)境下搭建 java 開(kāi)發(fā)環(huán)境提供有力支撐。 一、Flexus 云服務(wù)器 X 實(shí)例介紹 1.1 Flexus 云服務(wù)器 X
    的頭像 發(fā)表于 12-30 09:07 ?252次閱讀
    Flexus 云<b class='flag-5'>服務(wù)</b>器 X 實(shí)例:在 <b class='flag-5'>Docker</b> 環(huán)境下<b class='flag-5'>搭建</b> java 開(kāi)發(fā)環(huán)境

    企業(yè)云服務(wù)器平臺(tái)設(shè)計(jì)與搭建

    企業(yè)云服務(wù)器平臺(tái)的設(shè)計(jì)與搭建是一個(gè)復(fù)雜但系統(tǒng)的過(guò)程,涉及多個(gè)環(huán)節(jié)和因素。主機(jī)推薦小編為您整理發(fā)布企業(yè)云服務(wù)器平臺(tái)設(shè)計(jì)與搭建這一過(guò)程的詳細(xì)闡述。
    的頭像 發(fā)表于 12-04 09:51 ?140次閱讀

    docker-compose配置文件內(nèi)容詳解以及常用命令介紹

    需要的所有服務(wù)(例如:Web服務(wù)器、數(shù)據(jù)庫(kù)、緩存等)并輕松管理它們。 Docker Compose 使用的三個(gè)步驟: 使用 Dockerfile 定義應(yīng)用程序的環(huán)境
    的頭像 發(fā)表于 12-02 09:29 ?1104次閱讀
    <b class='flag-5'>docker</b>-compose配置文件內(nèi)容詳解以及常用命令介紹

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    192.168.10.101:5000/led_flash:v1.0 圖17 Docker版本從1.3.X之后,與Docker Registry交互默認(rèn)使用https,然而前面搭建的私有倉(cāng)庫(kù)僅提供http
    發(fā)表于 07-25 14:36

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    17Docker版本從1.3.X之后,與Docker Registry交互默認(rèn)使用https,然而前面搭建的私有倉(cāng)庫(kù)僅提供http服務(wù),因此當(dāng)與私有倉(cāng)庫(kù)交互時(shí)將出現(xiàn)上面的錯(cuò)誤提示。可通
    發(fā)表于 07-17 11:05

    寶塔面板Docker一鍵安裝:部署GPTAcademic,開(kāi)發(fā)私有GPT學(xué)術(shù)優(yōu)化工具

    使用寶塔Docker-compose,5分鐘內(nèi)在海外服務(wù)器上搭建gpt_academic。這篇文章講解如何使用寶塔面板的Docker服務(wù)
    的頭像 發(fā)表于 07-02 11:58 ?2789次閱讀
    寶塔面板<b class='flag-5'>Docker</b>一鍵安裝:部署GPTAcademic,開(kāi)發(fā)私有GPT學(xué)術(shù)優(yōu)化工具

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    ,亦可實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。使用Docker,可像管理應(yīng)用程序一樣管理基礎(chǔ)結(jié)構(gòu)。通過(guò)利用Docker的快速發(fā)布、測(cè)試和部署代碼的方法,可顯著減少產(chǎn)品開(kāi)發(fā)時(shí)間。 ? Docker使用客戶端——
    的頭像 發(fā)表于 03-07 13:48 ?846次閱讀
    ARM平臺(tái)實(shí)現(xiàn)<b class='flag-5'>Docker</b>容器技術(shù)

     海外云服務(wù)搭建pi節(jié)點(diǎn)詳細(xì)步驟

     海外云服務(wù)搭建pi節(jié)點(diǎn)簡(jiǎn)單嗎?海外云服務(wù)搭建pi節(jié)點(diǎn)步驟有哪些?小編為您整理發(fā)布海外云服務(wù)搭建
    的頭像 發(fā)表于 02-21 10:16 ?1212次閱讀
    澳门百家乐骗人| 百家乐计划| 澳门百家乐官网海洋阿强| 大发888官方888| 百家乐赌局| 菲律宾百家乐官网赌场娱乐网规则 | 百家乐官网下对子的概率| 大发888娱乐城 df888ylc3403| 澳门百家乐现场游戏| 真人百家乐官网软件云南景| 井陉县| 威尼斯人娱乐城真人游戏| 百家乐美女视频聊天| 月亮城百家乐官网的玩法技巧和规则 | 百家乐官网画面| 百家乐官网翻天快播粤语| 大家旺娱乐| 威尼斯人娱乐场首页| 百家乐什么平台好| 百家乐官网制胜软件| 新昌县| 新濠天地娱乐城| 威尼斯人娱乐城地图| 最好的棋牌游戏大厅| 百家乐微笑打法| 澳门百家乐园游戏| 马牌百家乐官网的玩法技巧和规则| 百家乐官网有赢钱公式吗| 广宗县| 长沙县| 波克棋牌完整版下载| 大发888com| 百家乐任你博赌场娱乐网规则 | 波浪百家乐游戏中| 百家乐长龙太阳城| 网上百家乐有假的吗| 木星百家乐官网的玩法技巧和规则 | 百家乐规则好学吗| 百家乐作弊手段| 木棉百家乐官网的玩法技巧和规则| 利都百家乐官网国际娱乐网|