docker 安装 minio
1. 下载minio
docker pull minio/minio
2. 检查当前下载的所有镜像
docker images
3. 创建目录
(1)存放配置
mkdir -p /usr/myapp/minio/config
(2)存储上传文件的目录
mkdir -p /usr/myapp/minio/data
4. 创建minio容器并运行
docker run -d \
--name minio \
--restart=always \
-p 9000:9000 \
-p 9001:9001 \
--privileged=true \
-e "MINIO_ROOT_USER=maple" \
-e "MINIO_ROOT_PASSWORD=qwe123..." \
-v /usr/myapp/minio/data:/data \
-v /usr/myapp/minio/config:/root/.minio \
minio/minio server \
--console-address ":9000" \
--address ":9001" /data
第一个 -p 9000:9000是宿主机(物理机)端口号;第二个 -p 9001“9001是容器内的端口号
=====> 目的是为了让外部访问容器内的服务时,可以通过宿主机的端口进行访问
MINIO_ACCESS_KEY:账号(长度 ≥ 5 位)
MINIO_SECRET_KEY:密码(长度 ≥ 8 位)
5. 测试minio是否安装成功
虚拟机地址 + 端口号(9000)
http://192.168.101.129:9000/
6. 登录进去minio之后
(1)创建一个 Bucket
这里命名的名字,不要太复杂,因为上传文件的时候用得到
(2)创建一个 Access Key
点击create
复制它俩 Access Key 与 Secret Key,把它们复制进记事本里,等会儿测试的时候需要用到它俩
(3)开始编写测试文件
新建一个maven项目,因为需要导入maven依赖,如下是 pom.xml
<dependencies> <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.4.2</version> <exclusions> <exclusion> <artifactId>okhttp</artifactId> <groupId>com.squareup.okhttp3</groupId> </exclusion> </exclusions> </dependency> </dependencies>
以下是Java代码(只需要一个main方法就够了):
package net.ibp; import io.minio.BucketExistsArgs; import io.minio.MakeBucketArgs; import io.minio.MinioClient; import io.minio.UploadObjectArgs; import io.minio.errors.MinioException; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class FileUploader { public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException { try { // Create a minioClient with the MinIO server playground, its access key and secret key. MinioClient minioClient = MinioClient.builder() .endpoint("http://192.168.101.129:9001")//这里的ip和端口就是你访问minio的ip,端口号是刚才安装minio时配置的 9001,而并非物理机访问的端口号 .credentials("U4J107ZkgoLxreaxs9hT", "fUGpLNKhKEMnPuzftCF4mTslK6CIYFJ6m74nxxWu")//这里的accessKey和secretKey就是我刚才让你复制保存的东西 .build(); // Make 'photos' bucket if not exist. boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("photos").build());//这里的photos就是让你刚才新建Bucket时的名字,让你不要起复杂的原因就在这里 if (!found) { // Make a new bucket called 'photos'. minioClient.makeBucket(MakeBucketArgs.builder().bucket("photos").build());//这里也是桶(Bucket)的名字 } else { System.out.println("Bucket 'photos' already exists.");//这里也是桶的名字 } // Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket // 'asiatrip'. minioClient.uploadObject( UploadObjectArgs.builder() .bucket("photos")//这里也是桶的名字 .object("flower.png")//这里是要上传文件的名字 .filename("E:\\Maple\\Pictures\\Saved Pictures\\flower.png")//上传的文件的路径 .build()); System.out.println("'E:\\Maple\\Pictures\\Saved Pictures\\flower.png' is successfully uploaded as " + "object 'flower.png' to bucket 'photos'.");//这里的路径名、文件名和桶的名字别忘了改成你自己的 } catch (MinioException e) { System.out.println("Error occurred: " + e); System.out.println("HTTP trace: " + e.httpTrace()); } } }
(4)上传成功
(5)在minio中查看
进去之后点击刷新(refresh)
至此结束!!!
于此,谢君观之。若君 兴之所至,观之文末,有谏言者,吾便从谏如流。
书也,吾当复观之,亦采之;语也,吾当俯身倾耳以请,而不负其烦也,亦改之。
止于此,IT之路道阻且长,其术业之迭新亦疾,吾等须相扶相持,始得斯道愈行愈远,愿诸君共勉之~~~